如何使用Log4j创建基于进程的日志文件? [英] How to create process based log file using Log4j?

查看:327
本文介绍了如何使用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 包含日志来自 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆