English 中文(简体)
与log4j日志文件创建多个不同的内容
原标题:
  • 时间:2009-04-08 02:31:18
  •  标签:

有办法配置log4j,这样它将不同级别的日志输出到不同的输出源吗?

我想设置多个日志文件。主日志文件将捕获所有信息为所有类及以上消息。(在开发中,它将捕获所有调试和上面的消息,和跟踪特定类)。

然后,我想要一个单独的日志文件。日志文件将捕获所有调试消息类的特定子集,而忽略其他所有消息类。

有办法得到之后我什么?

问题回答

这应该让你开始:

log4j.rootLogger=QuietAppender, LoudAppender, TRACE
# setup A1
log4j.appender.QuietAppender=org.apache.log4j.RollingFileAppender
log4j.appender.QuietAppender.Threshold=INFO
log4j.appender.QuietAppender.File=quiet.log
...


# setup A2
log4j.appender.LoudAppender=org.apache.log4j.RollingFileAppender
log4j.appender.LoudAppender.Threshold=DEBUG
log4j.appender.LoudAppender.File=loud.log
...

log4j.logger.com.yourpackage.yourclazz=TRACE

也许是这样的?

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 <!-- general application log -->
 <appender name="MainLogFile" class="org.apache.log4j.FileAppender">
  <param name="File" value="server.log" />
  <param name="Threshold" value="INFO" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
  </layout>
 </appender> 
 <!-- additional fooSystem logging -->
 <appender name="FooLogFile" class="org.apache.log4j.FileAppender">
  <param name="File" value="foo.log" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
  </layout>
 </appender>
 <!-- foo logging -->
 <logger name="com.example.foo">
  <level value="DEBUG"/>
  <appender-ref ref="FooLogFile"/>
 </logger>
 <!-- default logging -->
 <root>
  <level value="INFO"/>
  <appender-ref ref="MainLogFile"/>
 </root>
</log4j:configuration>

因此,所有信息消息被写到server.log;相比之下,foo。日志包含com . example。只foo消息,包括级的调试信息。

我有这个问题,但有一点不一样,我试图登录不同的内容不同的文件。我有信息低电平的调试日志,和高标准的用户日志。我想去只有一个低阶的文件,和高标准的去一个文件,和一个syslogd。

我的解决方案是配置3输出源,然后设置日志如下:

log4j.threshold=ALL
log4j.rootLogger=,LowLogger

log4j.logger.HighLevel=ALL,Syslog,HighLogger
log4j.additivity.HighLevel=false

这部分对我来说是困难的是log4j。日志可以有多个输出源上市。我想做一次一行。

希望这可以帮助一个人在某一时刻!

主日志文件/ appender,设立了一个<代码>。阈值=信息> < /代码限制实际登录信息及以上的appender,不管伐木工调试,启用跟踪,等。

如上捕调试和什么……你d可能要编写一个定制的appender。

不过我建议不这样做,因为它听起来会使故障排除和分析非常困难:

  1. If your goal is to have a single file where you can look to troubleshoot something, then spanning your log data across different files will be annoying - unless you have a very regimented logging policy, you ll likely need content from both DEBUG and INFO to be able to trace execution of the problematic code effectively.
  2. By still logging all of your debug messages, you are losing any performance gains you usually get in a production system by turning the logging (way) down.

演示链接:< a href = " https://github.com/RazvanSebastian/spring_multiple_log_files_demo.git " rel = " nofollow noreferrer " > https://github.com/RazvanSebastian/spring_multiple_log_files_demo.git < / >

我的解决方案是基于XML配置使用<代码> spring-boot-starter-log4j > < /代码。的例子是一个基本的例子使用<代码> spring-boot-starter > < /代码和两个伐木工人到不同的日志文件写道。





相关问题
热门标签