log4j日志按分模块和分级输出到不同的文件中去
来源:互联网 发布:大数据分析的目标市场 编辑:程序博客网 时间:2024/06/01 10:35
现在遇到这样一个场景:
输出日志,按照不同的模块,和级别 输出到不同的文件中。现在有 org.zq.core 和 org.zq.web 包下需要将 info 和 error 分别输出到文件中,也就是说,需要输出到4个文件中。以下为配置文件;`实现思路:`分包:应该叫 log4j 的过滤功能,先过滤 log4j.logger.org.zq.core = xxx ,分级:然后使用 自定义的 appender 来改变log4j的层级范围判定
自定义appender
package org.zq.core.common.util.log;import org.apache.log4j.DailyRollingFileAppender;import org.apache.log4j.Priority;/** * Created by zhuqiang on 2015/5/12. */public class MyDailyRollingFileAppender extends DailyRollingFileAppender { @Override public boolean isAsSevereAsThreshold(Priority priority) { //只判断相同的范围(层级) return this.getThreshold().equals(priority); }}
log4j.properties
### set log levels ###log4j.rootLogger = info,stdout### 输出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n#配置org.zq.core该包下的appender:日志级别为:info,error,并且引用两个 appender#log4j.logger.org.zq.core = info,error,coreInfo,coreError## core info 日志:info 的日志输出到指定的一个目录##log4j.appender.coreInfo = org.zq.core.common.util.log.MyDailyRollingFileAppender #使用自定义的appender,改变Threshold的比较规则,只返回相同的。覆写原生的级别层级范围#log4j.appender.coreInfo.File = d:/zq/logs/core/info/info.log #输出文件地址#log4j.appender.coreInfo.layout = org.apache.log4j.PatternLayout #布局样式#log4j.appender.coreInfo.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #布局模版#log4j.appender.coreInfo.Threshold = INFO #这里一定要添加该属性,否则自定义appender中抛出空指针#log4j.additivity.coreInfo=false ## core error 日志:只拦截error错误信息,并且输出到指定的文件中##log4j.appender.coreError = org.zq.core.common.util.log.MyDailyRollingFileAppenderlog4j.appender.coreError.File = d:/zq/logs/core/error/error.loglog4j.appender.coreError.layout = org.apache.log4j.PatternLayoutlog4j.appender.coreError.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%nlog4j.appender.coreError.Threshold = ERRORlog4j.additivity.coreError=false##########################################################################################################配置org.zq.web该包下的appender:日志级别为:info,error,并且引用两个 appender#log4j.logger.org.zq.web = info,error,webInfo,webError## web info 日志##log4j.logger.webInfo = info,webInfolog4j.appender.webInfo = org.zq.core.common.util.log.MyDailyRollingFileAppenderlog4j.appender.webInfo.File = d:/zq/logs/web/info/info.loglog4j.appender.webInfo.layout = org.apache.log4j.PatternLayoutlog4j.appender.webInfo.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%nlog4j.appender.webInfo.Threshold = INFOlog4j.additivity.webInfo=false## web error 日志##log4j.logger.webError = error,webErrorlog4j.appender.webError = org.zq.core.common.util.log.MyDailyRollingFileAppenderlog4j.appender.webError.File = d:/zq/logs/web/error/error.loglog4j.appender.webError.layout = org.apache.log4j.PatternLayoutlog4j.appender.webError.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%nlog4j.appender.webError.Threshold = ERRORlog4j.additivity.webError=false
测试代码
//this 在web模块下 Logger l = Logger.getLogger(this.getClass()); l.info("webInfo-------------------- 信息"); l.error("webError-------------- 信息"); //用core模块中的类来获取log对象 Logger core = Logger.getLogger(new org.zq.core.Test().getClass()); core.info("coreInfo -----------------------------------------------------------------信息"); core.error("coreError -----------------------------------------------------------------信息");
大功告成:
0 0
- log4j日志按分模块和分级输出到不同的文件中去
- log4j日志输出分级别或模块到不同文件
- log4j日志输出分级别或模块到不同文件
- log4j将日志按模块输出到不同文件中
- log4j日志分级别输出到不同文件
- log4j不同的日志输出到不同的文件中
- Log4j按级别输出日志到不同的文件
- Log4j按级别输出日志到不同的文件
- Log4j按级别输出日志到不同的文件
- Log4j按级别输出日志到不同的文件
- log4j.xml的配置--把日志输出到不同的文件去
- 用log4j如何使不同的类的日志输出到不同的日志文件中.
- log4j日志分级输出文件
- log4j 不同模块输出到不同的文件
- log4j 不同模块输出到不同的文件
- 使log4j不同level的日志输出到不同文件
- log4j不同的类输出到不同的日志文件中
- log4j日志针对不同的类输出到不同的文件中。
- Android Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- 当今数码印刷的五大技巧
- 九章算法面试题21 寻找最近单词对
- 数据泵导入时报错ORA-39083: Object type TABLE:"JDIC"."CLCP" failed to create with error:
- log4j日志按分模块和分级输出到不同的文件中去
- 开发拾遗篇:安装VS2015
- (转载)C++中的Preprocess Compilation Linking
- maven常见错误
- MyEclipse环境下如何采用Maven导入ojdbc14.jar和ojdbc6.jar
- MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
- php-fpm.conf配置信息
- Linux设备模型(1)_基本概念
- Android帮助文档本地打开慢的解决方案