2016-04-21 105 views
0

我有一个场景,我有一个单独的自定义级别定义XYZLogLevel日志记录,我有2个滚动文件appender第二appender专门保留从XYZLogLevel日志消息记录。然而,这些日志都会出现在这两个文件中,这是不可取的。log4j自定义日志级别的Appender可加性

注: -

  1. 日志没有具体的打包,所以加入了加包不会 工作。
  2. 一切都必须通过log4j.properties文件来完成。

添加LevelRangeFilter先添加器当我添加第三附加目的地为另一个自定义级别,然后我又看到在第二和第三的appender 重复部分解决,但 。

log4j.rootCategory=ERROR, F, XYZLOG, LMNLOG 

log4j.appender.F=org.apache.log4j.RollingFileAppender 
log4j.appender.F.File=f_log.log 
log4j.appender.F.MaxFileSize=5MB 
log4j.appender.F.MaxBackupIndex=10 
log4j.appender.F.layout = org.apache.log4j.PatternLayout 
log4j.appender.F.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} [%p] %m%n 

log4j.appender.XYZLOG=org.apache.log4j.RollingFileAppender 
log4j.appender.XYZLOG.File=xyz_reporting.log 
log4j.appender.XYZLOG.threshold=XYZLOG#com.services.domain.xyzlogs.XYZLogLevel 
log4j.appender.XYZLOG.filter.a=org.apache.log4j.varia.LevelMatchFilter  
log4j.appender.XYZLOG.filter.a.LevelToMatch=XYZLOG#com.services.domain.xyzlogs.XYZLogLevel 
log4j.appender.XYZLOG.filter.a.AcceptOnMatch=true 
log4j.appender.XYZLOG.MaxFileSize=100KB 
log4j.appender.XYZLOG.MaxBackupIndex=10 
log4j.appender.XYZLOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.XYZLOG.layout.ConversionPattern=%m%n 

log4j.appender.LMNLOG=org.apache.log4j.RollingFileAppender 
log4j.appender.LMNLOG.File=lmn_reporting.log 
log4j.appender.LMNLOG.threshold=LMNLOG#com.services.domain.lmnlogs.LMNLogLevel 
log4j.appender.LMNLOG.filter.a=org.apache.log4j.varia.LevelMatchFilter  
log4j.appender.LMNLOG.filter.a.LevelToMatch=LMNLOG#com.services.domain.lmnlogs.LMNLogLevel 
log4j.appender.LMNLOG.filter.a.AcceptOnMatch=true 
log4j.appender.LMNLOG.MaxFileSize=100KB 
log4j.appender.LMNLOG.MaxBackupIndex=10 
log4j.appender.LMNLOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.LMNLOG.layout.ConversionPattern=%m%n 

也许这可以通过org.apache.log4j.varia.DenyAllFilter来解决,但不知何故,我无法配置的属性文件。我相信功能只适用于XML配置。

它是一个非常棘手的问题,因为我没有自由切换到XML配置,任何帮助,这将不胜感激球员。 链接和示例会很棒,因为我很快就能理解它们。

回答

0
I am answering my own question. 

First you need to create a logger and set additivity as FALSE. 

log4j.logger.XZYLOG=XZYLOG#XYZLOG#com.services.domain.xyzlogs.XYZLogLevel, XYZAPPENDER 

log4j.additivity.XZYLOG=false 

log4j.logger.LMNLOG=LMNLOG#XYZLOG#com.services.domain.lmnlogs.LMNLogLevel, LMNAPPENDER 

log4j.additivity.LMNLOG=false 

Then configure the appenders in following way. 

log4j.appender.XYZLOGAPPENDER=org.apache.log4j.RollingFileAppender 
log4j.appender.XYZLOGAPPENDER.File=xyz_reporting.log 
log4j.appender.XYZLOGAPPENDER.threshold=XYZLOG#com.services.domain.xyzlogs.XYZLogLevel 
log4j.appender.XYZLOGAPPENDER.MaxFileSize=100KB 
log4j.appender.XYZLOGAPPENDER.MaxBackupIndex=10 
log4j.appender.XYZLOGAPPENDER.layout=org.apache.log4j.PatternLayout 
log4j.appender.XYZLOGAPPENDER.layout.ConversionPattern=%m%n 

log4j.appender.LMNLOGAPPENDER=org.apache.log4j.RollingFileAppender 
log4j.appender.LMNLOGAPPENDER.File=lmn_reporting.log 

log4j.appender.LMNLOGAPPENDER.threshold = LMNLOG#com.services.domain.lmnlogs.LMNLogLevel
log4j.appender.LMNLOGAPPENDER.MaxFileSize = 100KB log4j.appender.LMNLOGAPPENDER.MaxBackupIndex = 10 log4j的。 appender.LMNLOGAPPENDER.layout = org.apache.log4j.PatternLayout log4j.appender.LMNLOGAPPENDER.layout.ConversionPattern =%米%N

You may or may not need the filter in this case. 

Note: I cannot post company code here thats why I modified the solution. 
This is to give you general idea how I have solved this problem. 
相关问题