使用Log4J 1. *,如何将两个包写入两个单独的文件?

我有以下两个包:

com.mycorp.project.first
com.mycorp.project.second

我想配置Log4J(SLF4J)将日志从一个包写入一个文件,并从另一个包写入第二个文件。 我不希望他们混在一起。

要清楚,这是一个项目/一个进程正在运行。

我尝试过滤和使用logger但是它们似乎被log4j忽略了。 两个文件总是相同的。

编辑:谢谢你到目前为止的答案,这是我得到的,它不起作用。 两个输出文件都是相同的。

 dev  A:/dev/LogTesting/logs/first.log  INFO   A:/dev/LogTesting/logs/first.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz   %d{MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n    A:/dev/LogTesting/logs/second.log  INFO   A:/dev/LogTesting/logs/second.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz   %d{MMM dd HH:mm:ss.SSS} %property{HOSTNAME} [%thread] %level %logger{36} %msg%n                           

试试这是属性文件的示例:

 log4j.rootLogger=DEBUG, CONSOLE # Each package has different appender name log4j.logger.com.mycorp.project.first=DEBUG, FIRST log4j.logger.com.mycorp.project.second=DEBUG, SECOND log4j.appender.FIRST=org.apache.log4j.RollingFileAppender log4j.appender.FIRST.File=./first.log log4j.appender.FIRST.layout=org.apache.log4j.PatternLayout log4j.appender.SECOND=org.apache.log4j.RollingFileAppender log4j.appender.SECOND.File=./second.log log4j.appender.SECOND.layout=org.apache.log4j.PatternLayout 

或者这个用于XML(仅突出显示重要部分):

   ...    ...            

创建两个appender LOG1LOG2 ,每个日志文件一个。 之后,在log4j配置文件中引用这些appender定义两个类别(每个包一个)。

     

Appender2

     

将动态文件路径.in log4j.properties

 log4j.appender.FILE.File=${file.name} 

并在java中设置文件路径System.setProperty("file.name", FILEPATH);

您只需指定2个appender,但为两者提供相同的输出日志文件名。

 #same appender for both packages log4j.logger.package1=INFO,MyCommonLogger log4j.logger.package2=INFO,MyCommonLogger log4j.appender.MyCommonLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.MyCommonLogger.layout=org.apache.log4j.PatternLayout log4j.appender.MyCommonLogger.layout.ConversionPattern=%t %d{MM/dd/yy HH:mm:ss} %x %-5p %c %M - %m%n #single log file for logs from both packages log4j.appender.MyCommonLogger.File=/somewhereonserver/log/mysinglelogfile.log