折腾:
【未解决】给Spring Boot的java项目中加上输出日志到文件中
期间,希望console中不要输出这么多日志,只需要info就够了
然后file中可以是debug
spring boot log4j2 config
Spring Boot Log4j 2 example – Mkyong.com
log4j2 console info file debug
好像可以用:
1 2 3 4 | <root level= "debug" > <appender-ref ref= "Console" level= "info" /> <appender-ref ref= "MyFile" level= "error" /> < /root > |
去试试
1 2 3 4 5 6 | < Loggers > < Root level = "debug" > < AppenderRef ref = "FILEOUT" level = "debug" /> < AppenderRef ref = "STDOUT" level = "info" /> </ Root > </ Loggers > |
结果:
终于实现了对应的效果:

- file:debug的level
- console:info的level
后来也在官网中
看到了对应的用法举例:
1 2 3 4 5 6 7 | < Loggers > < Root level = "trace" > <!-- Only events at DIAG level or more specific are sent to the console. --> < AppenderRef ref = "Console" level = "diag" /> < AppenderRef ref = "MyFile" level = "trace" /> </ Root > </ Loggers > |
“How do I send log messages with different levels to different appenders?
You don’t need to declare separate loggers to achieve this. You can set the logging level on the AppenderRef element.
…
<Loggers>
<Root level=”trace”>
<AppenderRef ref=”file” level=”DEBUG”/>
<AppenderRef ref=”STDOUT” level=”INFO”/>
</Root>
</Loggers>
”
后来也去回复了帖子:
【总结】
最后用配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version= "1.0" encoding= "UTF-8" ?> <Configuration> <Appenders> <File name= "FILEOUT" fileName= "xxx.log" append= "false" > <PatternLayout> <Pattern>%d{yyyyMMdd HH:mm:ss} %-5p [%t] %C{2} %F%L - %m%n</Pattern> </PatternLayout> </File> <Console name= "STDOUT" target= "SYSTEM_OUT" > <PatternLayout pattern= "%d %-5p %F:%L - %m%n" /> </Console> </Appenders> <Loggers> <Root level= "debug" > <AppenderRef ref= "FILEOUT" level= "debug" /> <AppenderRef ref= "STDOUT" level= "info" /> </Root> </Loggers> </Configuration> |
核心部分是:
1 2 3 4 | <Root level= "debug" > <AppenderRef ref= "FILEOUT" level= "debug" /> <AppenderRef ref= "STDOUT" level= "info" /> < /Root > |
分别指定了不同level和实现对应效果:
- file的level是debug
- debug及之上,如info等,都可以显示
- console的level是info
- info之下的,如debug等(日志太多)就不显示,只显示info及以上的日志
附录:
关于日志level:
- 共有8个级别
- 按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
具体解释:
- All:最低等级的,用于打开所有日志记录.
- Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
- Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
- Info:消息在粗粒度级别上突出强调应用程序的运行过程.
- Warn:输出警告及warn以下级别的日志.
- Error:输出错误信息日志.
- Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
- OFF:最高等级的,用于关闭所有日志记录.
转载请注明:在路上 » 【已解决】java中log4j2中配置日志的level不同:console是INFO而file是DEBUG