log4j.xml 配置
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j="http://jakarta./log4j/">
-
- <!-- 类似定义logger节点打印具体类,或某包中的指定级别以上日志 -->
- <logger name="common.TestLog4j">
- <level value="debug" />
- [color=red]<appender-ref ref="console" />[/color]
- </logger>
-
- <!-- 和logger节点功能差不多,打印具体类,或某包中的指定级别以上日志
- <category name="common.TestLog4j">
- <priority value="warn"/>
- </category>
- -->
-
-
- <appender name="console" class="org.apache.log4j.ConsoleAppender">
- <!--param name="Threshold" value="INFO" 为打印logger 去掉Threshold参数配置 /-->
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="【AppLog】 %d{ABSOLUTE} %-5p %m%n" />
- </layout>
- </appender>
-
- <appender name="file"
- class="org.apache.log4j.DailyRollingFileAppender">
- <param name="File" value="log.txt" />
- <!--日志过滤门槛,记录warn以上级别日志 -->
- <param name="Threshold" value="WARN" />
- <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d %-5p %m %n" />
- </layout>
- </appender>
-
- <root>
- <!-- root 整体设置过滤优先级,如果appender 没有设置filter或Threshold 默认采用该级别,定义的logger不在其中(即不会被过滤掉)。 -->
- <priority value="INFO" />
- <appender-ref ref="console" />
- <appender-ref ref="file" />
- </root>
- </log4j:configuration>
本加红色部分参数,logger 节点配置打印在console appender中。 导致ERROR [STDERR] log4j:ERROR Attempted to append to closed appender named [CONSOLE]错误,具体原因不太清楚。去掉该配置后达到自己的要求。 http://brighter./blog/342162
下面是log4j.properties 简单配置
- # Global logging configuration
- log4j.rootLogger=error,stdout,fileout
-
- #调试使用,配置打印common.log具体类,或包内日志。
- #log4j.logger 与 log4j.category为前缀,common包名,common.TestLog4j类。
- #log4j.logger.common=DEBUG
- #log4j.category.common.TestLog4j=debug
-
- # Console output...
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n
- #File output...
- log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.fileout.file=c:/log.txt
- log4j.appender.fileout.DatePattern='.'yyyy-MM-dd'.log'
- log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
- log4j.appender.fileout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n
- log4j.appender.fileout.Threshold=INFO
-
- 测试参考java代码 log4j配置文件要放在资源根目录下,否则测试结果与预计相悖。
- public class TestLog4j {
- private static Logger logger = Logger.getLogger(TestLog4j.class );
- public static void main(String[] args) {
- PropertyConfigurator.configure( "D:/workspace/JP/test/log4j.properties" );
- logger.fatal( " fatal " );
- logger.error( " error " );
- logger.warn( " warn " );
- logger.info( " info " );
- logger.debug( " debug " );
-
- }
- }
(1). 输出方式appender一般有5种:
org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志) org.apache.log4j.ConsoleAppender (控制台) org.apache.log4j.FileAppender (文件) org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件) org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
(2). 日记记录的优先级priority,优先级由高到低分为 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。 Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。
(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出): %c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName) %d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss} %l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数 %n 换行符 %m 输出代码指定信息,如info(“message”),输出message %p 输出优先级,即 FATAL ,ERROR 等 %r 输出从启动到显示该log信息所耗费的毫秒数 %t 输出产生该日志事件的线程名
|