我是使用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并参考我需要记录的类
<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
<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。来自Calculator的所有消息都写入classA.log
我如何获得记录器:
protected final Log log = LogFactory.getLog(getClass());
我可以提出一些建议吗?谢谢。