http://www.cnblogs.com/ITtangtang/p/3926665.html
http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html
http://blog.csdn.net/anlina_1984/article/details/5313023
log4j分级别打印日志+通过socket将日志传输至日志服务器
- 指定输出日志级别
package test.log; import org.apache.log4j.FileAppender; import org.apache.log4j.Priority; public class MyAppender extends FileAppender { @Override public boolean isAsSevereAsThreshold(Priority priority) { // 只判断是否相等,而不判断优先级 return this.getThreshold().equals(priority); } }
- 自定义日志配置
#log4j.properties ###自定义通用设置 #日志根目录 mylog.path = D://logs #写文件方式 #mylog.appender = org.apache.log4j.MyAppender mylog.appender = test.log.MyAppender #true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容 mylog.append = true #自定义总级别:DEBUG < INFO < WARN < ERROR < FATAL mylog.level = TRACE #false表示只输出到自定义日志,true表示也同时输出到rootLogger mylog.additivity = true #指定布局模式 mylog.layout = org.apache.log4j.PatternLayout #设定以怎样的格式显示消息 mylog.layout.ConversionPattern = %d|%m%n ### 设置### log4j.rootLogger = DEBUG,stdout ### 输出信息到控制台 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n #自定义debug日志 log4j.logger.myDebug = ${mylog.level}, debug, info, warning, error, trace log4j.appender.trace = ${mylog.appender} log4j.appender.trace.File = ${mylog.path}/trace.log log4j.appender.trace.Append = ${mylog.append} log4j.appender.trace.Threshold = TRACE log4j.appender.trace.layout = ${mylog.layout} log4j.appender.trace.layout.ConversionPattern = ${mylog.layout.ConversionPattern} log4j.appender.debug = ${mylog.appender} log4j.appender.debug.File = ${mylog.path}/debug.log log4j.appender.debug.Append = ${mylog.append} log4j.appender.debug.Threshold = DEBUG log4j.appender.debug.layout = ${mylog.layout} log4j.appender.debug.layout.ConversionPattern = ${mylog.layout.ConversionPattern} log4j.appender.info = ${mylog.appender} log4j.appender.info.File = ${mylog.path}/info.log log4j.appender.info.Append = ${mylog.append} log4j.appender.info.Threshold = INFO log4j.appender.info.layout = ${mylog.layout} log4j.appender.info.layout.ConversionPattern = ${mylog.layout.ConversionPattern} log4j.appender.warning = ${mylog.appender} log4j.appender.warning.File = ${mylog.path}/warning.log log4j.appender.warning.Append = ${mylog.append} log4j.appender.warning.Threshold = WARN log4j.appender.warning.layout = ${mylog.layout} log4j.appender.warning.layout.ConversionPattern = ${mylog.layout.ConversionPattern} log4j.appender.error = ${mylog.appender} log4j.appender.error.File = ${mylog.path}/error.log log4j.appender.error.Append = ${mylog.append} log4j.appender.error.Threshold = ERROR log4j.appender.error.layout = ${mylog.layout} log4j.appender.error.layout.ConversionPattern = ${mylog.layout.ConversionPattern} log4j.additivity.myDebug = ${mylog.additivity}
#使用名称myDebug的logger,根据log4j.additivity.myDebug定义判定是否输出到rootLogger
#LoggerFactory.getLogger("myDebug");
#使用XXYY的classs全名的logger,如果没有定义,自动输出到rootLogger
#LoggerFactory.getLogger(XXYY.class);
注意slf4j-log4j12需要直接引入jar文件,不要通过maven引入,否则会出现如下报错,无法正常记录日志
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.