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 调整为 WARNERROR

此外,您必须为要从中写入日志消息的 packages/classes 创建一个显式记录器。

<Logger name="com.my.app" level="info">
  <AppenderRef="STDOUT" />
  ..
</Logger>

我还建议您将记录器 (%c) 添加到日志模式中。