Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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_Logging_File_Log4j - Fatal编程技术网

Java 如何使用log4j的同一个记录器将不同的信息写入两个不同的文件?

Java 如何使用log4j的同一个记录器将不同的信息写入两个不同的文件?,java,logging,file,log4j,Java,Logging,File,Log4j,我想使用我的记录器写入两个不同的文件,声明如下: public static final Logger logger = Logger.getLogger(Adapt.class); PropertyConfigurator.configure("log4j.properties"); 文件log4j包含: log4j.rootLogger=DEBUG, FA #File Appender log4j.appender.FA=org.apache.log4j.FileAppender log

我想使用我的记录器写入两个不同的文件,声明如下:

public static final Logger logger = Logger.getLogger(Adapt.class);
PropertyConfigurator.configure("log4j.properties");
文件log4j包含:

log4j.rootLogger=DEBUG, FA

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=temp.ppr
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.append=false
log4j.appender.FA.layout.ConversionPattern= %m%n
是否可以使用logger轻松地将不同的文本写入两个不同的文件

如果没有,有没有办法用两个伐木工人做到这一点?(我试过了,但由于函数configure是静态的,所以出现了问题。)


谢谢。

只需定义第二个记录器变量:

Logger otherLogger = Logger.getLogger("OTHER_LOGGER");
为它定义一个配置(注意log4j.记录器。其他记录器语法参见log4j.rootLogger,如和所指出):

并像往常一样记录不同的文本:

logger.debug("My normal log");
otherLogger.info("My special text");

要创建temp2.ppr,请更改为

log4j.OTHER_LOGGER=DEBUG, OtherAppender

这对我有用。 我的日志文件:

# log4j.properties
log4j.rootLogger=DEBUG,hfis,stdout
#For second log
log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender
log4j.additivity.OTHER_LOGGER = false 

#File Appender 
log4j.appender.OtherAppender=org.apache.log4j.FileAppender 
log4j.appender.OtherAppender.File=C:\\Legacy.log
log4j.appender.OtherAppender.ImmediateFlush=true 
log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.OtherAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n 

log4j.rootCategory=ERROR
log4j.rootLogger.additivity=false

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.hfis=org.apache.log4j.RollingFileAppender
log4j.appender.hfis.Threshold=DEBUG
log4j.appender.hfis.file=C:\\hfis.log 
log4j.appender.hfis.ImmediateFlush=true
log4j.appender.hfis.MaxFileSize=5MB
log4j.appender.hfis.layout=org.apache.log4j.PatternLayout
log4j.appender.hfis.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n
# R is the RollingFileAppender that outputs to a rolling log
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG

# Define a pattern layout for the file.
log4j.appender.mystdout.layout=org.apache.log4j.PatternLayout
log4j.appender.mystdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} %-5p: %m%n<br>

配置是我的问题,如何将其连接到此特定记录器?PropertyConfigurator.configure只获取属性文件的路径,而不获取logger对象。将所有内容放在同一个文件中。log4j.rootLogger和log4j.others_LOGGER行都不起作用,我尝试了LOGGER.info(“1”);otherLogger.info(“2”);我得到的是temp2.ppr文件没有创建,temp.ppr的文本是12。。。怎么办?您是否正确配置了附加器?两个记录器都指向不同的appender吗?我刚刚在文件中添加了您的行,以及其他记录器的删除,就像您编写的一样。我的代码与我在问题上写的代码相同。
log4j.**logger**.OTHER_LOGGER=DEBUG, OtherAppender
# log4j.properties
log4j.rootLogger=DEBUG,hfis,stdout
#For second log
log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender
log4j.additivity.OTHER_LOGGER = false 

#File Appender 
log4j.appender.OtherAppender=org.apache.log4j.FileAppender 
log4j.appender.OtherAppender.File=C:\\Legacy.log
log4j.appender.OtherAppender.ImmediateFlush=true 
log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.OtherAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n 

log4j.rootCategory=ERROR
log4j.rootLogger.additivity=false

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.hfis=org.apache.log4j.RollingFileAppender
log4j.appender.hfis.Threshold=DEBUG
log4j.appender.hfis.file=C:\\hfis.log 
log4j.appender.hfis.ImmediateFlush=true
log4j.appender.hfis.MaxFileSize=5MB
log4j.appender.hfis.layout=org.apache.log4j.PatternLayout
log4j.appender.hfis.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5p %c - %m%n
# R is the RollingFileAppender that outputs to a rolling log
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG

# Define a pattern layout for the file.
log4j.appender.mystdout.layout=org.apache.log4j.PatternLayout
log4j.appender.mystdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss.SSS} %-5p: %m%n<br>
final static Logger log = Logger.getLogger("hfis");
final static Logger log2 = Logger.getLogger("OTHER_LOGGER");