【问题标题】:log4j write log message to different filelog4j 将日志消息写入不同的文件
【发布时间】:2016-08-27 04:24:13
【问题描述】:

我在我的项目中使用 log4j。我想要标准输出、调试记录器和最终报告记录器。调试记录器几乎可以编写调试/信息级别的消息。报告将是一个不同的记录器,只写信息消息。我尝试了不同的方法,阅读了很多示例,但我仍然无法弄清楚。要么我丢失了我的标准输出,要么我将所有调试都写入两个记录器。

## Root logger option
log4j.rootLogger=DEBUG,stdout,debug_Log,reports_Log

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%F:%t:%L] - %m%n


log4j.appender.debug_Log=org.apache.log4j.RollingFileAppender
log4j.appender.debug_Log.File=c:\\debug.log
log4j.appender.debug_Log.MaxFileSize=10MB
log4j.appender.debug_Log.MaxBackupIndex=10
log4j.appender.debug_Log.maxFileSize=10MB 
log4j.appender.debug_Log.layout=org.apache.log4j.PatternLayout
log4j.appender.debug_Log.layout.ConversionPattern=%d-[%t-%F] %-5p %m%n

log4j.appender.reports_Log=org.apache.log4j.FileAppender
log4j.appender.reports_Log.File=c:\\Walmart.log
log4j.appender.reports_Log.layout=org.apache.log4j.PatternLayout
log4j.appender.reports_Log.layout.ConversionPattern=%d %-5p %m%n

log4j.logger.org.springframework=WARN  
log4j.logger.org.apache.component=WARN 
log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.http.impl.conn=WARN
log4j.logger.org.apache.http.impl.client=WARN
log4j.logger.org.apache.http.client=WARN

log4j.logger.debug_Log=DEBUG, debug_Log
log4j.logger.reports_Log=INFO, reports_Log
log4j.logger.stdout=DEBUG, stdout
log4j.additivity.debug_Log=false
log4j.additivity.reports_Log=false
log4j.additivity.stdout=false

我的代码在这里

import org.apache.log4j.Logger;


static final Logger debugLog = Logger.getLogger("debug_Log");
static final Logger resultLog = Logger.getLogger("reports_Log");

public static void main(String[] args) {
    debugLog.info("Welcome to AmzCompareSale application");
    debugLog.debug("DEbugLog debug");

}

任何提示将不胜感激 =)

【问题讨论】:

  • log4j.appender.reports_Log.Threshold=INFO。现在它将忽略 DEBUG 级别的日志消息。
  • 也许have a look at this 可以更好地了解记录器和附加程序的工作原理

标签: java logging log4j


【解决方案1】:

让我回答我自己的问题。这个post 有助于描述 logger 和 appender 之间的区别。我一直在将我的代码链接到 appender,而不是创建记录器并将 appender 附加到它。如果没有单独的附加程序和记录器,我将消息打印到两个 .log 文件。

这就是我最终要做的。

## Root logger option
log4j.rootLogger=DEBUG
#I want both debugAppender and reportsAppender to print to screen
log4j.logger.debug_Log=INFO, debugAppender, stdout
log4j.logger.reports_Log=INFO, reportsAppender, stdout


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%F:%t:%L] - %m%n

log4j.appender.debugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.debugAppender.File=c:\\debug.log
log4j.appender.debugAppender.MaxFileSize=10MB
log4j.appender.debugAppender.MaxBackupIndex=10
log4j.appender.debugAppender.maxFileSize=10MB 
log4j.appender.debugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.debugAppender.layout.ConversionPattern=%d-[%t-%F] %-5p %m%n

log4j.appender.reportsAppender=org.apache.log4j.FileAppender
log4j.appender.reportsAppender.File=c:\\Walmart.log
log4j.appender.reportsAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.reportsAppender.layout.ConversionPattern=%d %-5p %m%n

#I just want to turn off spring rest template debug logging
log4j.logger.org.springframework=WARN  
log4j.logger.org.apache.component=WARN 
log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.http.impl.conn=WARN
log4j.logger.org.apache.http.impl.client=WARN
log4j.logger.org.apache.http.client=WARN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多