问题描述
我尝试使用log4j创建多个不同内容的日志文件.
这是我的log4j.properties文件
# Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/home/dhanushka/Documents/log4j.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n log4j.appender.testng=org.apache.log4j.RollingFileAppender log4j.appender.testng.File=/home/dhanushka/Documents/TestNGlog.log log4j.appender.testng.MaxFileSize=1MB log4j.appender.testng.MaxBackupIndex=1 log4j.appender.testng.layout=org.apache.log4j.PatternLayout log4j.appender.testng.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n # Direct log messages to 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{ABSOLUTE} %-5p [%c{1}] %m%n # Root logger option log4j.rootLogger=INFO, file, admin, stdout, testng # Log everything. Good for troubleshooting log4j.logger.org.hibernate=INFO # Log all JDBC parameters log4j.logger.org.hibernate.type=ALL
这是我在代码中实施的方式.
public class VerifyAmenities { private static Logger defaultLogger = Logger.getLogger("file"); private static Logger testNGlogger = Logger.getLogger("testng"); . . } defaultLogger.info("This is default Logger"); testNGlogger.info("This is testNG Logger");
通过此创建两个日志文件.但是两者都有相同的日志.感谢任何人回答.
推荐答案
终于找到了这样做的方式.
# Root logger option log4j.rootLogger=TRACE, stdout, file log4j.category.testngLogger=DEBUG, testng log4j.additivity.testngLogger=false
在rootLogger中,就像所有日志的父亲一样.默认情况下它继承. Root Logger选项应该是这样.
如果您additivity设置为false,它永远不会转到rootLogger
在log4j.xml文件中,它会像这样.
<logger name="testngLogger" additivity="false"> <level value="DEBUG" /> <appender-ref ref="testngLogger" /> </logger> <root> <priority value="INFO" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="fileLogger" /> </root>
问题描述
I'm tried to create multiple log files of different content with log4j.
This is my log4j.properties file
# Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/home/dhanushka/Documents/log4j.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n log4j.appender.testng=org.apache.log4j.RollingFileAppender log4j.appender.testng.File=/home/dhanushka/Documents/TestNGlog.log log4j.appender.testng.MaxFileSize=1MB log4j.appender.testng.MaxBackupIndex=1 log4j.appender.testng.layout=org.apache.log4j.PatternLayout log4j.appender.testng.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n # Direct log messages to 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{ABSOLUTE} %-5p [%c{1}] %m%n # Root logger option log4j.rootLogger=INFO, file, admin, stdout, testng # Log everything. Good for troubleshooting log4j.logger.org.hibernate=INFO # Log all JDBC parameters log4j.logger.org.hibernate.type=ALL
Here is how I implemented in code.
public class VerifyAmenities { private static Logger defaultLogger = Logger.getLogger("file"); private static Logger testNGlogger = Logger.getLogger("testng"); . . } defaultLogger.info("This is default Logger"); testNGlogger.info("This is testNG Logger");
By this it creates two log files. But Both has same logs. Appreciate any ones reply.
推荐答案
Finally I found the way of doing this.
# Root logger option log4j.rootLogger=TRACE, stdout, file log4j.category.testngLogger=DEBUG, testng log4j.additivity.testngLogger=false
In rootLogger, that is like a father of all logs. It inherit by default. Root logger option should be like that.
If you additivity set to false it will never goes to rootLogger
In log4j.xml file it will goes like this.
<logger name="testngLogger" additivity="false"> <level value="DEBUG" /> <appender-ref ref="testngLogger" /> </logger> <root> <priority value="INFO" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="fileLogger" /> </root>