log4j 日志记录文件排除日志消息
log4j logging file exclude logs messages
我正在使用 BOM Finchley.RC2
构建 spring 启动应用程序版本 2.0.2.RELEASE
并尝试使用 log4j2.xml
将日志写入文件。问题是我只想记录我的应用程序消息,例如:
log.error("this is error");
log.info("this is info");
但日志文件显示其他日志以及 Spring 日志等,如下所示:
29-08-2018 18:01:45,023 [INFO ] [] [main] - this is info
29-08-2018 18:01:45,492 [INFO ] [] [main] - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b4711e2: startup date [Wed Aug 29 18:01:45 PKT 2018]; root of context hierarchy
29-08-2018 18:01:45,659 [INFO ] [] [main] - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
29-08-2018 18:01:45,687 [INFO ] [] [main] - Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$af5d2aa2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
如何自定义我的 log4j2.xml
以实现我的应用程序仅记录 info/debug/error 日志。
下面是我的 log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingFile name="FileAppender" fileName="mylogFile.log"
append="true" filePattern="log-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<pattern>%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n"/>
</Console>
<File name="JSONAppender" fileName="\tmp\logFile.json.log" append="true">
<JSONLayout complete="true" charset="UTF-8" compact="true" eventEol="true"/>
</File>
</Appenders>
<Loggers>
<Logger name="org.apache.logging.log4j.core.config.xml" level="info" >
<AppenderRef ref="FileAppender"/>
</Logger>
<Logger name="guru.springframework.blog.log4j2json" level="debug">
<AppenderRef ref="JSONAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FileAppender"/>
<AppenderRef ref="JSONAppender"/>
</Root>
</Loggers>
</Configuration>`
任何帮助,我的配置有什么问题?
使用 Spring 1.5.9 version
它工作正常但是当我升级到 2.0.2.RELEASE
记录到文件时不起作用。
为了避免来自外部库的 INFO
,您需要将根日志级别从 INFO
调整为 WARN
或 ERROR
。
此外,您必须为要从中写入日志消息的 packages/classes 创建一个显式记录器。
<Logger name="com.my.app" level="info">
<AppenderRef="STDOUT" />
..
</Logger>
我还建议您将记录器 (%c
) 添加到日志模式中。
我正在使用 BOM Finchley.RC2
构建 spring 启动应用程序版本 2.0.2.RELEASE
并尝试使用 log4j2.xml
将日志写入文件。问题是我只想记录我的应用程序消息,例如:
log.error("this is error");
log.info("this is info");
但日志文件显示其他日志以及 Spring 日志等,如下所示:
29-08-2018 18:01:45,023 [INFO ] [] [main] - this is info
29-08-2018 18:01:45,492 [INFO ] [] [main] - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b4711e2: startup date [Wed Aug 29 18:01:45 PKT 2018]; root of context hierarchy
29-08-2018 18:01:45,659 [INFO ] [] [main] - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
29-08-2018 18:01:45,687 [INFO ] [] [main] - Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$af5d2aa2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
如何自定义我的 log4j2.xml
以实现我的应用程序仅记录 info/debug/error 日志。
下面是我的 log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingFile name="FileAppender" fileName="mylogFile.log"
append="true" filePattern="log-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<pattern>%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n"/>
</Console>
<File name="JSONAppender" fileName="\tmp\logFile.json.log" append="true">
<JSONLayout complete="true" charset="UTF-8" compact="true" eventEol="true"/>
</File>
</Appenders>
<Loggers>
<Logger name="org.apache.logging.log4j.core.config.xml" level="info" >
<AppenderRef ref="FileAppender"/>
</Logger>
<Logger name="guru.springframework.blog.log4j2json" level="debug">
<AppenderRef ref="JSONAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FileAppender"/>
<AppenderRef ref="JSONAppender"/>
</Root>
</Loggers>
</Configuration>`
任何帮助,我的配置有什么问题?
使用 Spring 1.5.9 version
它工作正常但是当我升级到 2.0.2.RELEASE
记录到文件时不起作用。
为了避免来自外部库的 INFO
,您需要将根日志级别从 INFO
调整为 WARN
或 ERROR
。
此外,您必须为要从中写入日志消息的 packages/classes 创建一个显式记录器。
<Logger name="com.my.app" level="info">
<AppenderRef="STDOUT" />
..
</Logger>
我还建议您将记录器 (%c
) 添加到日志模式中。