2017-05-06 76 views

回答

0

您可以使用此配置进行日志记录,也可以更改日志文件的路径。

# Root logger option 
log4j.rootLogger=INFO, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 

#Redirect to Tomcat logs folder 
#log4j.appender.file.File=${catalina.home}/logs/logging.log 

log4j.appender.file.File=./logs/test.log // change your path 
log4j.appender.file.MaxFileSize=10MB 
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.logger.org.springframework=WARN 
log4j.logger.com.amstech=DEBUG 
+0

哪里是包的名字,其记录将被重定向到log4j.appender.file.File = /日志/ test.log中,并在那里被指定其余日志会默认catalina.out的? – user1846749

1

例如,登录你的两个包的文件是:

com.abhi.packageOne; -> packageOneFile.log 
com.abhi.packageTwo; -> packageTwoFile.log 

添加rootLogger作为文件或控制台。你可以保留任何记录水平,即跟踪,信息,errror等按您的要求

log4j.rootLogger=Debug, file 

你必须为你的两个包

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.File=/path/main.log 
log4j.appender.MAIN_LOG.layout=org.apache.log4j.PatternLayout 

log4j.appender.PACKAGE_ONE=org.apache.log4j.RollingFileAppender 
log4j.appender.PACKAGE_ONE.File=/path/packageOneFile.log 
log4j.appender.PACKAGE_ONE.layout=org.apache.log4j.PatternLayout 

log4j.appender.PACKAGE_TWO=org.apache.log4j.RollingFileAppender 
log4j.appender.PACKAGE_TWO.File=/path/packageTwoFile.log 
log4j.appender.PACKAGE_TWO.layout=org.apache.log4j.PatternLayout 

您需要设置相应的加创建两个新的附加目的地。

什么是addictivity?

为了避免日志冗余,我们可以使用Log4j可加性。只需将Log4j记录器的additivity属性设置为false,然后传递到该记录器的日志消息就不会传播到其父记录器。因此,我们新的Log4j配置文件将为:

log4j.additivity.com.abhi.packageOne=false 
log4j.additivity.com.abhi.packageTwo=false 

log4j.logger.com.abhi.packageOne=DEBUG, PACKAGE_ONE 
log4j.logger.com.abhi.packageTwo=DEBUG, PACKAGE_TWO 

log4j.rootLogger=DEBUG, MAIN_LOG 

其中MAIN_LOG是您的常规日志文件。如果您想在MAIN_LOG中打印来自PACKAGE_ONE和PACKAGE_TWO的日志,请在下面的行中加入。

log4j.rootLogger=DEBUG, MAIN_LOG , PACKAGE_ONE , PACKAGE_TWO 
+0

log4j.rootLogger = DEBUG,MAIN_LOG,PACKAGE_ONE,PACKAGE_TWO这个声明做了什么?你能详细解释一下吗? 以及log4j.additivity.com.abhi.packageOne = false以及log4j.rootLogger = DEBUG,MAIN_LOG,PACKAGE_ONE是否需要同时? – user1846749

+0

我以相同的方式定义了记录器。在我的情况下,日志是在控制台而不是文件中出现的,我没有在任何地方定义控制台appender - 可能是什么原因? – user1846749

+0

您需要在所有这些语句之上添加'log4j.rootLogger = debug,file'。我已经更新了答案。 –