log4j自定义标签等级输出到指定文件
2015-12-07 00:00
267 查看
摘要: log4j 过滤器 log4j等级关系
需求: 系统被访问的日志和系统负载的日志,起先设计时放到数据库中,防止过大,要求放到专用的目录下
1.
2.
3.
4.
需求: 系统被访问的日志和系统负载的日志,起先设计时放到数据库中,防止过大,要求放到专用的目录下
1.
package com.ats.adapter; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.net.SyslogAppender; public class CustomerLog { /** * 自定义级别名称,以及级别范围 */ private static final Level TimerResourceLever = new CustomerLogLevel(20050,"timerResourceLever",SyslogAppender.LOG_LOCAL0); private static final Level ThreadSysLog = new CustomerLogLevel(20051,"threadSysLog",SyslogAppender.LOG_LOCAL1); /** * 新建log4的等级 */ private static class CustomerLogLevel extends Level{ public CustomerLogLevel(int level, String levelStr, int syslogEquivalent) { super(level, levelStr, syslogEquivalent); } } /** * 记录系统负载的日志 */ public static void customerLogTimer(Logger logger,Object objLogInfo){ logger.log(TimerResourceLever, objLogInfo); } /** * 记录系统访问的日志 */ public static void customerLogThread(Logger logger,Object objLogInfo){ logger.log(ThreadSysLog, objLogInfo); } }
2.
package com.ats.adapter; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; public class CustomerLogFilter extends Filter { /** * log4jfilter的参数 */ boolean acceptOnMatch = false; private int levelMin; private int levelMax; public int getLevelMin() { return levelMin; } public void setLevelMin(int levelMin) { this.levelMin = levelMin; } public int getLevelMax() { return levelMax; } public void setLevelMax(int levelMax) { this.levelMax = levelMax; } public boolean isAcceptOnMatch() { return acceptOnMatch; } public void setAcceptOnMatch(boolean acceptOnMatch) { this.acceptOnMatch = acceptOnMatch; } @Override public int decide(LoggingEvent lgEvent) { int inputLevel = lgEvent.getLevel().toInt(); if(inputLevel>=levelMin && inputLevel <= levelMax){ return 0; } return -1; } }
3.
#TimerResources log4j.additivity.timerResourceLever=false log4j.logger.timerResourceLever=info,timerResourceLever log4j.appender.timerResourceLever=org.apache.log4j.DailyRollingFileAppender log4j.appender.timerResourceLever.filter.a=com.ats.adapter.CustomerLogFilter log4j.appender.timerResourceLever.filter.a.levelMin=20050 log4j.appender.timerResourceLever.filter.a.levelMax=20050 log4j.appender.timerResourceLever.filter.a.AcceptOnMatch=true log4j.appender.timerResourceLever.encoding=UTF-8 log4j.appender.timerResourceLever.Append=true log4j.appender.timerResourceLever.layout=org.apache.log4j.PatternLayout log4j.appender.timerResourceLever.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] <%l> %m%nx log4j.appender.timerResourceLever.DatePattern='-'yyyy-MM-dd'.log' log4j.appender.timerResourceLever.File=${catalina.home}/logs/ats/resource.log #ThteadSysLog log4j.additivity.threadSysLog=false log4j.logger.threadSysLog=info,timerResourceLever,threadSysLog log4j.appender.threadSysLog=org.apache.log4j.DailyRollingFileAppender log4j.appender.threadSysLog.filter.b=com.ats.adapter.CustomerLogFilter log4j.appender.threadSysLog.filter.b.levelMin=20051 log4j.appender.threadSysLog.filter.b.levelMax=20051 log4j.appender.threadSysLog.filter.b.AcceptOnMatch=true log4j.appender.threadSysLog.encoding=UTF-8 log4j.appender.threadSysLog.Append=true log4j.appender.threadSysLog.layout=org.apache.log4j.PatternLayout log4j.appender.threadSysLog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] <%l> %m%nx log4j.appender.threadSysLog.DatePattern='-'yyyy-MM-dd'.log' log4j.appender.threadSysLog.File=${catalina.home}/logs/ats/sysLog.log
4.
resources 和sysLog 是 model 类 CustomerLog.customerLogTimer(log, resources); CustomerLog.customerLogThread(log, sysLog);
相关文章推荐
- OC20简易计算器
- mysql 中文按照拼音排序
- Hive导入10G数据的测试
- linux sysctl.conf中相关重要设定的详细说明
- 也算是终于把局域网多人聊天室写好了
- 程序员在遇到bug时的30中反应
- java学习(一)
- Java学习(二)
- Java学习(三)
- Java学习(四)
- tomcat结合nginx使用小结
- iOS"Request failed: unacceptable content-type: tex
- AFNetworking 2.0 使用总结
- iOS开发技巧 autolayout自动布局
- OCTAVE
- 突破 YouTube 观影年龄的限制
- 取模
- 抢票神器
- 完美解决MyEclipse中编写XML文件时只能用ALT+/的尴尬
- 在eclipse中使用Lombok