我在我的项目中使用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");
}
任何提示都将不胜感激
让我回答我自己的问题。这篇文章有助于描述logger和appender之间的区别。我一直在将代码链接到appender,而不是创建记录器,并将appender连接到它。没有单独的appender和logger,我将消息打印到两者。日志文件。
这就是我最后要做的。
## 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
问题内容: 此代码是否同时写入日志文件和控制台? 问题答案: 不,它不会同时写入两者。只会写入控制台。关于原始代码的简短说明。我想您在某处定义,但是代码仍然不正确。您需要在语句中使用引号,例如: 因为我认为您是要附加到文件中。否则,您的代码将抛出一个因为未定义的变量。 但是,正如其他人所说,您应该强烈考虑使用日志记录模块。这是一个如何同时写入控制台和日志文件的简单示例。该代码部分源自此处和此处:
问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):
我正在从事一个Spring Hibernate项目,其中包含Spring AMQP RabbitMQ消息传递实现。rabbitmq配置位于一个单独的xml中,该xml被导入到根应用程序上下文中。rabbitmq侦听器接收器每秒轮询一次队列。重要的日志消息被大量的调试级轮询消息隐藏在日志文件中。 有没有办法将轮询日志分离到另一个文件中,或者阻止它污染日志? 我使用log4j进行日志记录;配置如下。
我正在尝试配置log4j以将消息记录到文件中。现在,文件确实是用我提供的名称创建的,但是日志并没有写入文件中。我的代码: 我的文件: 运行此命令时,我在控制台中得到以下输出: 文件确实在我的主目录中创建。但它是空的。 知道我做错了什么吗?我使用的是log4j版本1.2.17。
有没有人知道为什么这个日志没有写入文件。它将两次写入标准输出,但不写入文件: 此外,我尝试删除“stdout”附加器,但我没有得到任何日志记录。 log4j.rootlogger=debug,Stdout,mainAppender log4j.appender.stdout=org.apache.log4j.consoleappender log4j.appender.stdout.layout=