LOG4J
写在最前,其实网上已经有比较好的教程了,基础:http://www.jb51.net/article/44734.htm,回滚,发送日志邮件:http://www.jb51.net/article/77190.htm;
配置:http://logging.apache.org/log4j/2.x/manual/configuration.html,http://logging.apache.org/log4j/2.x/manual/appenders.html#RoutingAppender 文档:http://logging.apache.org/log4j/2.x/log4j-api/apidocs/index.html
LOG4J是一个用于记录日志的工具包;
日志级别:从严重程度的重到轻排列:fatal,error,warn,info,debug,trace;LOG4J建议只采用四个日志级别:error,warn,info,debug;
error:错误信息,需要打日志文件,且发到控制台;
warn:警告信息,需要打日志文件;
info:认为有意义的信息,需要打日志文件;
debug:对程序调试有用的信息;
有多种形式可配置LOG4J,本文只介绍XML配置方式;
LOG4J重点在于配置,主要的部分是,日志级别,日志的输出方式,日志的样式,时间;暂时发现,配置文件里不能有注释,不然会出错;
输出到文件:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <RollingFile name="RollingFile" fileName="logs/oh.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz"> <PatternLayout> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="6" modulate="true"/> <SizeBasedTriggeringPolicy size="10 MB"/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
输出到控制台:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn" name="MyApp" packages=""> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%m%n"/> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="STDOUT"/> </Root> </Loggers> </Configuration>
当然,也可以设置多个Logger:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <RollingFile name="RollingFile" fileName="logs/oh.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz"> <PatternLayout> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="6" modulate="true"/> <SizeBasedTriggeringPolicy size="10 MB"/> </Policies> </RollingFile> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%m%n"/> </Console> </Appenders> <Loggers> <Logger name="com.vv.Test" level="warn" additivity="true"> <AppenderRef ref="RollingFile"/> </Logger> <Root level="warn"> <AppenderRef ref="STDOUT"/> </Root> </Loggers> </Configuration>
以上Logger的name不能乱取,需要时一个类名,且一定要有"name"属性,表明在该类中生成Logger将会使用对应的设置,在这个例子里面就是level是warn或者以上的,就会使用名为"RollingFile"的输出方式;
additivity的值表明是否同时使用Root进行输出,默认为true,即,如上例子设置的话,再Test类中实例化Looger对象,且调用warn(String msg)方法,就会既在控制台输出,也会在文件输出;如果设为false,就只会在文件输出,不会在控制台输出;
配置文件的路径应该在src包下(不过应该可以设置再其他路径);
如果像如上的配置文件配置,那么打日志时:logger.warn(String message),会把日志信息既输出到文件,也输出到控制台;
以上是基本的用法;
浙公网安备 33010602011771号