如何使用Log4j创建基于进程的日志文件? [英] How to create process based log file using Log4j?
问题描述
下面是我的课程详情。 ClassA和ClassD是可运行的类。从ClassA我打电话给ClassB和ClassC。
below are my class details. ClassA and ClassD are runnable classes. From ClassA I am calling ClassB and ClassC.
package comp1 -> Contains ClassA, ClassB, ClassC
package comp2 -> Contains ClassD, ClassE
Log for comp1 -> comp1.log
Log for comp2 -> comp2.log
我正在使用Log4j进行日志记录。我有两个基于包名称的记录器。我从 ClassD
调用 ClassE
和 ClassB
。现在, comp1.log
包含来自 ClassB
和 comp2.log $ c的日志消息$ c>包含日志来自
ClassD
和 ClassE
。
I am using Log4j for logging. I have two loggers based on package name. I am calling ClassE
and ClassB
from ClassD
. Now, comp1.log
contains logging messages from ClassB
and comp2.log
contains log froms ClassD
and ClassE
.
如何制作基于流程的日志?如果我运行 ClassD
,只有一个日志文件 ClassD
, ClassE
和 ClassB
。这可能是使用Log4j吗?
How can I make a process based log? If I run ClassD
there should only one log file for ClassD
, ClassE
and ClassB
. Is this possible using Log4j?
推荐答案
一种解决方案可能是使用系统变量。
你可以在log4j.xml中写这样的东西
One solution could be use System Variables. You can write something like this in your log4j.xml
<appender name="ProductionLog" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/logs/myLog-${myProcId}.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="10000KB"/>
<param name="MaxBackupIndex" value="10"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="[%d] [%-5p] {%c|%t}: %m%n"/>
</layout>
</appender>
重要的是使用系统变量 $ {myProcId}
您可以在初始化Log4j之前提供系统变量,例如
Important is that usage of system variable ${myProcId}
You can provide system variable for example before you initialize Log4j e.g.
System.setProperty("myProcId", procId);
DOMConfigurator.configure(log4jFilePath);
这篇关于如何使用Log4j创建基于进程的日志文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!