Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j排除包中的特定文件_Java_Log4j - Fatal编程技术网

Java Log4j排除包中的特定文件

Java Log4j排除包中的特定文件,java,log4j,Java,Log4j,我有一个整个项目的日志文件,但现在我想从默认日志中排除一个特定的类文件日志,并写入一个单独的文件。项目中大约有100个类文件。我想单独记录的这个类文件位于一个包含15个文件的包中 我试过设置,但不起作用。有什么办法我能做到吗 提前感谢。只需为该类创建一个单独的记录器和附加器 例如,假设一个包中有3个类,并且希望其中一个类写入不同的日志文件。在下面的示例中,类Example2将写入自己的文件,而Example1和Example3类将写入另一个文件 示例1.java: package my; im

我有一个整个项目的日志文件,但现在我想从默认日志中排除一个特定的类文件日志,并写入一个单独的文件。项目中大约有100个类文件。我想单独记录的这个类文件位于一个包含15个文件的包中

我试过设置,但不起作用。有什么办法我能做到吗


提前感谢。

只需为该类创建一个单独的记录器和附加器

例如,假设一个包中有3个类,并且希望其中一个类写入不同的日志文件。在下面的示例中,类
Example2
将写入自己的文件,而
Example1
Example3
类将写入另一个文件

示例1.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();
    }
}
示例2.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");
    }
}
示例3.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

我想知道如何以xml格式编写(我使用的是log4j.xml)。当前在我的XML配置中,我想从包com.my.xmlrpc.process中排除的是一个java类文件,文件名是com.my.xmlrpc.process.ProcesssTime
,但您还必须定义新的appender,这可以通过复制现有文件并更改其名称和写入的文件名来实现。当我创建一个新的附加器时,日志将打印在新文件(其他日志)中,也将附加在所有日志中。。我只想在其他日志中,而不是在所有日志中。这是我的附件