log4j定制类实现(二):添加模块名配置
来源:互联网 发布:msdn win7 优化 编辑:程序博客网 时间:2024/05/21 19:26
在前面讲到了log4j定时打印的定制类实现,就不讲指定大小和指定备份文件个数了,从RollingFileAppender类copy代码到前面的定制类中添加即可,唯一需要解决的是并发问题,即文件关闭rename文件时,发生了记录日志事件时,会报output stream closed的错误。
现在有这样一种应用场景,而且经常有:
1.项目包含有多个不同的工程;
2.同一工程包含不同的模块。
对第一种情况,可以通过配置log4j<catogery=“Test”>,再在产生Logger时使用类似如下方式:
Logger logger=Logger.getLogger("Test");
对第二种情况,我们希望能够将不同模块打印到同一个日志文件中,不过希望能够在日志中打印出模块名以便出问题时定位问题,因此便有了本文需要的在Appender类中添加配置ModuleName,下面开始改造,与定时打印不同,我们采用RollingFileAppender类为基类进行改造。
首先,添加配置项moduleName,并增加get、set方法;
由于继承自RollingFileAppender,所以只需要在subAppend()中格式化LoggingEvent中的数据,添加formatInfo方法格式化数据,代码略;
最终的成品类如下:
package net.csdn.blog;import org.apache.log4j.Category;import org.apache.log4j.RollingFileAppender;import org.apache.log4j.spi.LoggingEvent;/** * @author coder_xia * */public class ModuleAppender extends RollingFileAppender{private String moduleName;/** * @return the moduleName */public String getModuleName(){return moduleName;}/** * @param moduleName * the moduleName to set */public void setModuleName(String moduleName){this.moduleName = moduleName;}/** * 格式化打印内容 * * @param event * event * @return msg */private String formatInfo(LoggingEvent event){StringBuilder sb = new StringBuilder();if (moduleName != null){sb.append(moduleName).append("|");sb.append(event.getMessage());}return sb.toString();}@Overridepublic void subAppend(LoggingEvent event){String msg = formatInfo(event);super.subAppend(new LoggingEvent(Category.class.getName(), event.getLogger(), event.getLevel(), msg, null));}}
- log4j定制类实现(二):添加模块名配置
- log4j定制类实现(一):配置间隔时间,定时打印日志
- 内核模块定制,添加
- 【Java常用工具类】之log4j 二: log4j.properties配置格式
- log4j日志配置(二)
- log4J配置详情 二
- log4j配置(二)
- log4j配置(二)
- log4j根据不同模块配置
- OpenWrt添加内核模块软件包(二)
- OpenWrt添加内核模块软件包(二)
- Hibernate添加log4j的实现
- Hadoop学习之Hadoop集群的定制配置(二)
- Hadoop学习之Hadoop集群的定制配置(二)
- (八)添加部门模块的实现
- log4j分模块分内容配置
- log4j配置按模块输出log
- keepalived 添加pop3_check模块(二)
- 字节对齐重写malloc 和 free
- poj 1958 Strange Towers of Hanoi
- HDU,3782,xxx定律
- 线性时间查找第k大元素
- Activity---基础总结篇之三:Activity的task相关 .
- log4j定制类实现(二):添加模块名配置
- CF 121E Lucky Array 【树状数组】
- 公开课可下载资源汇总
- 抛硬币的赌博游戏——庞果英雄会
- 日历控件(IE10下测试通过)
- [每日一题] OCP1z0-047 :2013-08-02 权限―――分配系统权限............................................22
- 编写高效的Android代码[转]
- 互斥与同步
- 2013腾讯编程马拉松初赛第一场(3月21日) 湫湫系列故事——减肥记II ----线段树