繁体   English   中英

如何使用log4j将不同程序包的消息记录到同一日志文件中?

[英]How to use log4j to log different package's message into same log file?

我是使用log4j的初学者,请不要介意我的愚蠢问题。

现在,我有一个jar,其中包含一些我将在不同类中使用的方法。 让我们说一个计算器方法。 此方法具有一些需要记录的消息和异常处理。

我有两个需要使用此方法进行计算的类,并且这两个类都有自己的日志文件。 classA.log和classB.log

问题是如何将来自计算器的消息和错误记录到classA.log和classB.log中,具体取决于调用计算器的类。

我想要classA.log和classB.log像:

[datetime] INFO - [foo.A] This is class A
[datetime] INFO - [foo.A] Now calling calculator
[datetime] INFO - [cal.mycal.Calculator] Now enter calculator and start calculating
[datetime] WARN - [cal.mycal.Calculator] A warning message from calculator
[datetime] ERROR - [cal.mycal.Calculator] An error message from calculator
[datetime] INFO - [foo.A] Some mistakes are made.
[datetime] INFO - [foo.A] Class A done

在log4j.xml中,我需要添加一个记录器并引用我需要记录到哪个类

  <logger name="foo.A">
    <level value="INFO" />
    <appender-ref ref="A" />
  </logger> 
  <logger name="cal.mycal.Calculator">
    <level value="INFO" />
    <appender-ref ref="A" />
  </logger>

和追加器

  <appender name="A" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="log/classA.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"></param>
    <param name="Append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%d{dd-MMM-yyyy HH:mm:ss}] %-5p - [%c] %m%n"/>
    </layout>
  </appender>

但是这样做之后,来自foo.B的方法调用将不会写入classB.log。 来自计算器的所有消息均写入classA.log

我如何获得记录器:

protected final Log log = LogFactory.getLog(getClass());

我可以提出一些建议吗? 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM