java - log4j 日志文件排除日志消息

标签 java logging log4j2 spring-logback

我正在使用 BOM Finchley.RC2 构建 Spring Boot 应用程序版本 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 以仅实现我的应用程序日志记录的信息/调试/错误日志。 下面是我的 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 版本 它工作正常,但当我升级到 2.0.2.RELEASE 时,日志记录到文件不起作用。

最佳答案

为了避免来自外部库的 INFO,您需要将根日志级别从 INFO 调整为 WARNERROR.

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

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

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

关于java - log4j 日志文件排除日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085759/

相关文章:

java - 如何使用@JacksonInject(useInput= OptBoolean.FALSE)

java - 从 JSP/Servlet 编写简单日志到 UNIX/Shell 脚本

java.util.logging.Logger吞咽日志

java - 无法从 log4j2 客户端 GUI 连接到我的应用程序

java - Log4j2 网络查询

java - 在 Ubuntu-Linux 上获取 Java 中给定端口的进程名称?

java - 注释 @CrossOrigin ("*") 不起作用

java - 错误 StatusLogger 无法识别格式说明符

java - 分割数千java

logging - 有没有 ELK-stack 的轻量级替代品?