我有一个整个项目的日志文件,但现在我想从默认日志中排除特定的类文件日志并写入单独的文件。项目中有大约100个类文件。我想要单独记录的这个类文件位于一个包含15个文件的包中。
我尝试过设置但不起作用。有没有办法可以做到。
提前致谢。
答案 0 :(得分:1)
只需为该类创建一个单独的记录器和追加器。
例如,假设一个包中有3个类,并且您希望其中一个类写入不同的日志文件。在下面的示例中,类Example2
将写入其自己的文件,而Example1
和Example3
类将写入另一个文件。
Example1.java:
package my;
import org.apache.log4j.Logger;
public class Example1 {
private static final Logger logger = Logger.getLogger(Example1.class);
public static void main(String[] args){
logger.info("info from my.Example1");
Example2 e2 = new Example2();
e2.doSomething();
Example3 e3 = new Example3();
e3.doSomething();
}
}
Example2.java
package my;
import org.apache.log4j.Logger;
public class Example2 {
private static final Logger logger = Logger.getLogger(Example2.class);
public void doSomething(){
logger.info("This is from Example2 class");
}
}
Example3.java:
package my;
import org.apache.log4j.Logger;
public class Example3 {
private static final Logger logger = Logger.getLogger(Example3.class);
public void doSomething(){
logger.info("This is from Example3 class");
}
}
log4j.properties
log4j.rootLogger=INFO, file1, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.file1=org.apache.log4j.RollingFileAppender
log4j.appender.file1.File=logs/file1.log
log4j.appender.file1.MaxFileSize=10MB
log4j.appender.file1.MaxBackupIndex=1
log4j.appender.file1.layout=org.apache.log4j.PatternLayout
log4j.appender.file1.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.file2=org.apache.log4j.RollingFileAppender
log4j.appender.file2.File=logs/file2.log
log4j.appender.file2.MaxFileSize=10MB
log4j.appender.file2.MaxBackupIndex=1
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.my.Example2=INFO, file2, stdout
log4j.additivity.my.Example2=false
这是输出:
file1.log:
INFO main my.Example1 - info from my.Example1
INFO main my.Example3 - This is from Example3 class
file2.log:
INFO main my.Example2 - This is from Example2 class