如何使用 log4j 创建多个不同内容的日志文件
How to create multiple log files of different content with log4j
我尝试使用 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
中,它就像所有日志的父亲。它默认继承。根记录器选项应该是这样的。
如果你 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>
我尝试使用 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
中,它就像所有日志的父亲。它默认继承。根记录器选项应该是这样的。
如果你 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>