配置log4j.properties文件|分开日志

时间:2011-09-19 14:06:00

标签: log4j

我在我的webpoject中使用了hibernate。我在WEB-INF / classes下有我的log4j.propertes。我想要hibernate日志和我的应用程序日志的单独日志文件。在镜头中我对hibernate日志不感兴趣但我只对我的申请日志。

我在log4j.properties中有以下内容

# Define the root logger with appender file
logDir = ${catalina.home}/logs/akp.log
log4j.rootLogger = DEBUG, FILE

#Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File= ${catalina.home}/logs/${fileName}.log

在我的应用程序中,我正在获取我的记录器实例

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

但是在日志文件夹中,我只能看到一个名为exlog的文件:.log(不是xyz.log)。还有这个名字,我有所有的混合日志。我想为我的每个applation类分别创建日志文件使用

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

3 个答案:

答案 0 :(得分:1)

你的log4j属性文件是声明变量但不使用它们。你还有其他一些问题,并且已经提出了三个不同的问题。

在这里定义变量'logDir':

  

logDir = $ {catalina.home} /logs/akp.log    (你在这里混合文件名和目录)

这里使用变量'fileName'并且根本不是指logDir

  

log4j.appender.FILE.File = $ {catalina.home} / logs / $ {fileName} .log

你需要改变一点点才能实现你所描述的内容(还有很多其他选项和含义)但是这是一个开始 - 分别声明你的目录和文件名:

  

logDir = $ {catalina.home} / logs   fileName = myAppLog.log

指定根类别appender(使用比'FILE'更好的命名约定)。就个人而言,除非是一个非常小的应用程序,否则我永远不会在根目录中使用DEBUG:

  

log4j.rootLogger = DEBUG,myAppAppender

使用日志目录和文件名创建appender。使用append to add来决定是添加到现有文件还是覆盖:

  

log4j.appender.myAppAppender = org.apache.log4j.FileAppender   log4j.appender.myAppAppender.File = $ {logDir} / $ {fileName}   log4j.appender.myAppAppender.Append =真

然后,您可以为不同的应用程序类别指定其他appender(和文件)。根据需要/方便参数化文件名,使用additivity = false将条目仅保留在此特定日志中:

  

log4j.category.com.company.package.specialpackagename = INFO,specialAppender   log4j.appender.specialAppender = org.apache.log4j.FileAppender   log4j.appender.specialAppender.File = $ {} LOGDIR /specialPackageLog.log   log4j.appender.specialAppender.Append =真   log4j.appender.specialAppender.Additivity =假

这应该让你开始(如果你还没有:)

欢呼声

罗布

答案 1 :(得分:0)

您是否在$ {fileName}中替换了“filename”? 是否在catalina.home文件夹下创建日志文件,如果没有检查你的catalina.home是否被声明?

答案 2 :(得分:0)

我在使用 log4j.properties 时遇到了类似的问题,其目的是将日志从一个软件包层次结构推送到一个文件中,将日志从另一个软件包层次结构推送到第二个文件中。

虽然这个问题已经接受了答案,但我仍然只是写这篇文章来帮助那些无法配置此问题的人。

我们需要为每个记录器配置appender并定义两个记录器,如下所示:

# Direct log messages to a log file
log4j.appender.metering_app=org.apache.log4j.RollingFileAppender
log4j.appender.metering_app.File=C:/logs/Metering_INFO.log 
log4j.appender.metering_app.MaxFileSize=10MB
log4j.appender.metering_app.MaxBackupIndex=50
log4j.appender.metering_app.layout=org.apache.log4j.PatternLayout
log4j.appender.metering_app.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %5p %c{2}:%L - %m%n
log4j.appender.metering_app.filter.ID=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.metering_app.filter.ID.LevelMax=FATAL
log4j.appender.metering_app.filter.ID.LevelMin=INFO
log4j.appender.metering_app.filter.ID.AcceptOnMatch=true


# Direct log messages to a log file
log4j.appender.notification_app=org.apache.log4j.RollingFileAppender
log4j.appender.notification_app.File=C:/logs/Notification_INFO.log 
log4j.appender.notification_app.MaxFileSize=10MB
log4j.appender.notification_app.MaxBackupIndex=50
log4j.appender.notification_app.layout=org.apache.log4j.PatternLayout
log4j.appender.notification_app.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %5p %c{2}:%L - %m%n
log4j.appender.notification_app.filter.ID=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.notification_app.filter.ID.LevelMax=FATAL
log4j.appender.notification_app.filter.ID.LevelMin=INFO
log4j.appender.notification_app.filter.ID.AcceptOnMatch=true

#root logger
log4j.logger.com.test.metering=INFO, metering_app
log4j.additivity.com.test.metering=false
log4j.logger.com.test.notification=INFO, notification_app
log4j.additivity.com.test.notification=false