Log4j配置
官网 http://logging.apache.org/log4j/2.x/download.html
约定: http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticReconfiguration
扩展: http://logging.apache.org/log4j/2.x/manual/appenders.html#JMSTopicAppender
注意:“Note that unlike Log4j 1.x, the public Log4j 2 API does not expose methods to add, modify or remove appenders and filters or manipulate the configuration in any way”
基本概念
(0). LOG4 J主要由三大组件组成:
Logger: 决定什么日志信息应该被输出、什么日志信息应该被忽略;
Appender: 指定日志信息应该输出到什么地方, 这些地方可以是控制台、文件、网络设备;
Layout: 指定日志信息的输出格式;
一个Logger可以有多个Appender,也就是说日志信息可以同时输出到多个设备上,每个Appender对应一种Layout
(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 输出产生该日志事件的线程名
一般用法
xml方式
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </Console> <RollingFile name="RollingFile" fileName="logs/springmvc.log" filePattern="logs/$${date:yyyy-MM-dd}/springmvc-%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout> <pattern>%d{yyyy/MM/dd HH:mm:ss .SSS} => %-5level %class{36} %L %M - %msg%xEx%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="6" modulate="true" /> <SizeBasedTriggeringPolicy size="5 MB" /> </Policies> <DefaultRolloverStrategy max="50" /> </RollingFile> </appenders> <loggers> <root level="INFO"> <appender-ref ref="Console" /> <appender-ref ref="RollingFile" /> </root> </loggers> </configuration>
新版中好像没有Email的支持,不知道为什么
Refer:
http://www.blogjava.net/thisliy/archive/2009/06/01/279377.html
http://blog.csdn.net/lrenjundk/article/details/8178875