我在我的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());
答案 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