无法使用Java中的Log4j仅记录我的项目日志

时间:2017-09-10 07:35:18

标签: java logging log4j

这是我的log4j.properties文件。

log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#outputs to Tomcat home
log4j.appender.file.File=${catalina.home}/logs/myapp.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p 

%c {1}:%L - %m%n

这是加载与框架等相关的一堆日志。

我试图把

log4j.rootLogger=DEBUG only to load only my logs. 

我希望我的日志文件只包含我的项目日志。我应该在哪里改变?

我记录我的陈述的方式是

private Logger logger = Logger.getLogger(MyClass.class);

logger.debug("bla bla");

2 个答案:

答案 0 :(得分:0)

您应根据应用程序包名称配置logger

假设您的应用程序包名称为test.example,然后在log4j.properties -

中添加以下行
log4j.logger.test.example = DEBUG, stdout, file
log4j.additivity.test.example = false

它将在test.example包中以及子包中的类中启用调试日志。

要删除与框架相关的日志,请将rootLogger日志级别更改为ERRORWARN -

log4j.rootLogger=ERROR, stdout, file

它只显示与上面的包test.example及其子包中不存在的框架类或类相关的错误。

答案 1 :(得分:-1)

log4j.rootLogger=INFO,myproject

#My logger option
log4j.logger.com.myproject=ERROR
log4j.appender.myproject=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myprojectapp.File=${catalina.home}/logs/myproject.log
log4j.appender.myproject.DatePattern='.'yyyy-MM-dd
log4j.appender.myproject.layout=org.apache.log4j.PatternLayout
log4j.appender.myproject.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -%M - %m%n
log4j.appender.myproject.Threshold=DEBUG

#to not add myproject logs to other logger
log4j.additivity.com.myproject=false