问题描述
我想使用我的记录器写入两个不同的文件,这是这样声明的:
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轻松地将不同的文本写入两个不同的文件?
如果没有,是否有两种记录仪有办法做到这一点? (我尝试了这一点,并且由于静态的功能配置而遇到了问题.)
谢谢.
推荐答案
只是定义第二个记录器变量:
Logger otherLogger = Logger.getLogger("OTHER_LOGGER");
为其定义配置(请注意log4j. logger .other_logger语法cf. log4j.rootlogger,如 user623395 和
创建temp2.ppr,从 to 它对我有用.
我的日志文件: 我的日志变量是其他推荐答案
log4j.OTHER_LOGGER=DEBUG, OtherAppender
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");
问题描述
I'd like to write to two different files using my logger, which is declared like this:
public static final Logger logger = Logger.getLogger(Adapt.class); PropertyConfigurator.configure("log4j.properties");
the file log4j contains:
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
Is it possible at all to use logger to write different text to two different files easily?
If not, is there a way to do that with two loggers? (I tried that and got problems because of the function configure which is static.)
Thanks.
推荐答案
Just define a second logger variable:
Logger otherLogger = Logger.getLogger("OTHER_LOGGER");
define a configuration for it (notice the log4j.logger.OTHER_LOGGER syntax cf. log4j.rootLogger, as pointed out by user623395 and venkatesh Dodla):
log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender log4j.additivity.OTHER_LOGGER = false #File Appender log4j.appender.OtherAppender=org.apache.log4j.FileAppender log4j.appender.OtherAppender.File=temp2.ppr log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout log4j.appender.OtherAppender.append=false log4j.appender.OtherAppender.layout.ConversionPattern= %m%n
and log your different text as usual:
logger.debug("My normal log"); otherLogger.info("My special text");
其他推荐答案
To create temp2.ppr, change from
log4j.OTHER_LOGGER=DEBUG, OtherAppender
to
log4j.**logger**.OTHER_LOGGER=DEBUG, OtherAppender
其他推荐答案
it worked for me. My Log file:
# 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>
and my log variables are
final static Logger log = Logger.getLogger("hfis"); final static Logger log2 = Logger.getLogger("OTHER_LOGGER");