java log4j 中的多个文件附加程序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4165341/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 05:07:46  来源:igfitidea点击:

multiple fileappenders in log4j

javalog4j

提问by Lalchand

I have to put the log info in two separate log files based on some condition.how to do that. here is my logging.properties file

我必须根据某些条件将日志信息放在两个单独的日志文件中。如何做到这一点。这是我的 logging.properties 文件

log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.File=${catalina.home}/logs/std.log
log4j.appender.stdout.MaxFileSize=200KB
log4j.appender.stdout.MaxBackupIndex=2
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%c] %p - %m%n


log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/demo.log
log4j.appender.R.MaxFileSize=200KB
log4j.appender.R.MaxBackupIndex=2
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%c] %p - %m%n

回答by Qwerky

You can define multiple appenders and assign java packages to the appenders. In the example below all classes in com.mycorp.webwill log to web.log at DEBUGlevel and classes in com.mycorp.dbwill log to db.log at INFOlevel.

您可以定义多个 appender 并将 java 包分配给 appender。在下面的示例中,所有类都com.mycorp.web将在DEBUG级别登录到 web.log,而在级别中的类com.mycorp.db将登录到 db.logINFO级别。

log4j.rootLogger=debug, weblogger, dblogger

#Define which packages use which appenders
log4j.logger.com.mycorp.web=DEBUG,weblogger
log4j.logger.com.mycorp.db=INFO,dblogger

#Ensure the logs don't add to each other
log4j.additivity.com.mycorp.web=false
log4j.additivity.com.mycorp.db=false

#Define web appender
log4j.appender.weblogger=org.apache.log4j.DailyRollingFileAppender
log4j.appender.weblogger.File=/var/log/myapp/web.log
log4j.appender.weblogger.DatePattern='.'yyyy-MM-dd
log4j.appender.weblogger.Append=true
log4j.appender.weblogger.layout=org.apache.log4j.PatternLayout
log4j.appender.weblogger.layout.ConversionPattern=%d [%t] %-5p %c{1} - %m %n

#Define db appender
log4j.appender.dblogger=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dblogger.File=/var/log/myapp/db.log
log4j.appender.dblogger.DatePattern='.'yyyy-MM-dd
log4j.appender.dblogger.Append=true
log4j.appender.dblogger.layout=org.apache.log4j.PatternLayout
log4j.appender.dblogger.layout.ConversionPattern=%d [%t] %-5p %c{1} - %m %n

回答by Jeremy

Based on your condition, you can grab different loggers.

根据您的情况,您可以抓取不同的记录器。

Logger x = predicate() ? Logger.getLogger("wombat") : Logger.getLogger("other");

http://logging.apache.org/log4j/1.2/manual.html(Search for "wombat" for the relevant code.)

http://logging.apache.org/log4j/1.2/manual.html(搜索“wombat”以获得相关代码。)

回答by MarrLiss

If you want different file for some logger, you should write something like this:

如果你想要一些记录器的不同文件,你应该写这样的:

log4j.logger.LOGGER_ONE=DEBUG, stdout
log4j.logger.LOGGER_TWO=WARN, R