首页 > 其他分享 >log4j2生效

log4j2生效

时间:2024-04-16 13:33:05浏览次数:32  
标签:true spring boot springframework 生效 org log4j2

1.引入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 <!-- log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!-- 为了支持异步日志,添加Log4j2的异步日志处理器依赖 -->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jcl</artifactId>
        </dependency>

2.配置配置文件

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration scan="true" scanPeriod="120 seconds">
    <properties>
        <property name="log.base" value="${mvn.log.dir}"/>
        <property name="log.STDOUT" value="${mvn.log.STDOUT}"/>
        <property name="log.level" value="${mvn.log.level}"/>
    </properties>

    <Appenders>
        <!-- 定义主日志文件 -->
        <RollingFile name="MainLog" fileName="${log.base}/main.log"
                     filePattern="${log.base}/$${date:yyyy-MM}/main-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50MB" />
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <Filters>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- 定义错误日志文件 -->
        <RollingFile name="ErrorLog" fileName="${log.base}/error.log"
                     filePattern="${log.base}/$${date:yyyy-MM}/error-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50MB" />
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- 定义其他日志文件 -->
        <RollingFile name="RootLog" fileName="${log.base}/root.log"
                     filePattern="logs/$${date:yyyy-MM}/root-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>

        <!-- 异步配置 -->
        <Async name="AsyncMainLog">
            <AppenderRef ref="MainLog"/>
        </Async>
        <Async name="AsyncErrorLog">
            <AppenderRef ref="ErrorLog"/>
        </Async>
        <Async name="AsyncRootLog">
            <AppenderRef ref="RootLog"/>
        </Async>

        <!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="AsyncRootLog"/>
            <AppenderRef ref="Console"/>
        </Root>
        <Logger name="com.jdl.sys.app" level="info" additivity="false">
            <AppenderRef ref="AsyncMainLog"/>
        </Logger>
        <Logger name="om.jdl.sys.app.error" level="error" additivity="false">
            <AppenderRef ref="AsyncErrorLog"/>
        </Logger>
    </Loggers>
</Configuration>

3.构建配置,如果没有添加构建配置,log4j不一定能生效

3.1 配置构建中profile环境下的构建参数

<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <mvn.log.dir>./target/logs</mvn.log.dir>
                <mvn.log.STDOUT>true</mvn.log.STDOUT>
                <mvn.log.level>INFO</mvn.log.level>
            </properties>
        </profile>
    </profiles>

3.2 构建插件

maven-resource-plugin这个最重要,一定要加上,加上log4j2.xml中的变量才会生效

<build>
        <plugins>
            <!-- spring-boot自带的打包插件,设置mainClass方便本地启动类main方法启动的时候,可以动态匹配到profile -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.jdl.sys.app.main.AppMainApplication</mainClass>
                    <layout>DIR</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 资源文件打包需要关注,log4j2.xml中可以正确引导到相关变量 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <useDefaultDelimiters>true</useDefaultDelimiters><!--  这是重点-->
                </configuration>
            </plugin>
        </plugins>


        <!-- 添加这段配置是因为logback-spring.xml文件中引用了${mvn.log.dir}变量,需要动态从pom文件中加载生效 -->
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </testResource>
        </testResources>
    </build>

标签:true,spring,boot,springframework,生效,org,log4j2
From: https://www.cnblogs.com/PythonOrg/p/18137897

相关文章

  • vue指令中的import不生效,如何在指令中使用import { useBaseStore, useLocalStore } fr
    在Vue指令中,不能直接使用父组件中的导入语句和变量。指令是在模板编译阶段执行的,而不是在JavaScript的运行时执行的。因此,无法在指令中直接访问父组件的导入和变量。在Vue指令中,不能直接使用ES6的import语法,因为指令是在模板编译阶段执行的,而不是在JavaScript的运行......
  • IDEA中Maven项目修改JSP后通过配置Tomcat实现立即生效
    参考:IDEA中Facets和Artifacts配置说明idea中artifacts、facets、modulesIntelliJIDEA部署Web项目,终于搞懂了传统SpringMvc项目目录和对应tomcat配置如下:在日常开发过程中,我们修改完java代码后,接着就点击Build编译,然后就可以去验证代码了(前提是On'Update'Action选......
  • pycharm使用debug模式调试不生效问题
    1、设置中配置 TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovakCzechItalianSlovenianDanishJapaneseSp......
  • 日志脱敏更加优雅性能更好,远超正则。支持 logback+log4j2 插件
    项目介绍日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。sensitive项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发。支持logback和log4j2等常见的日志脱敏插件。日志插件解决正则匹配长文本可能出现的回溯......
  • log4j2 基础配置
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave......
  • Radium 行内样式在 React18 中不生效
    问题React17升级到18之后,行内样式借助Radium包实现hover和媒体查询,无法生效。npmiradium-S下载Radium依赖包App.jsimportRadiumfrom'radium'conststyleObj={width:100,height:100,backgroundColor:'#FAE',':hover':{backgro......
  • docker下mysql连接数修改后不生效问题的解决
    使用容器的方式使用mysql,在创建mysql容器的时候,映射了配置文件的路径(我映射的路径是:/home/env/mysql/config/),当修改了路径中配置文件中的最大连接数后,重启容器后,发现参数是不生效的情况,你遇到过吗?先说结果:是权限的问题,777权限会被mysql认为是安全的问题,忽略这种文件。具体如下:......
  • oracle组合索引什么情况下生效?
    Oracle组合索引(compositeindex)是指在数据库表的多个列上创建的索引。当查询操作中涉及到这些列并且是组合索引的前导列时,组合索引会生效。组合索引的前导列是指在索引中排在最前面的列。只有当查询的条件中使用了组合索引的前导列,且查询条件满足以下特性时,组合索引才会生效:......
  • 鸿蒙ArkTS属性justifyContent不生效
    在鸿蒙ArkTS开发时,书写如下代码build(){Column(){Row(){Text('短信验证码登录')Text('忘记密码')}.justifyContent(FlexAlign.SpaceBetween)}.width('100%')}这时justifyContent并没有出现两端对齐的效果原因是没有设置Row......
  • 关于动态使用keepAlive不生效的问题
    首先,我想实现在返回页面时,页面不进行刷新,比如我原先选择的第四页,返回后显示了第一页想到使用keepAlive缓存组件,大部分推荐的方法为这样,但是不生效<keep-alivev-if="$route.meta.keepAlive"><router-view/></keep-alive><router-viewv-else/>正确的使用方法......