使用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 LOG1
和LOG2
,每个日志文件一个。 之后,在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