因为项目是 ssm+maven
所以有关log4j的注意事项记录一下
首先,需要在web.xml里配置spring的拦截器用于支持在项目下生成log4j日志文件
<!-- 配置log4j输出日志文件的相对路径的spring监听器 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
因为默认项目目录就是 webapp.root ,所以直接这样配置即可
参考:https://blog.csdn.net/dahongwudi/article/details/17302211
### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到console ### 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 级别以上的日志到 ${webapp.root}/WEB-INF/logs/debug/DEBUG.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = ${webapp.root}/WEB-INF/logs/debug/DEBUG.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 输出ERROR 级别以上的日志到 ${webapp.root}/WEB-INF/logs/error/ERROR.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = ${webapp.root}/WEB-INF/logs/error/ERROR.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
还有,如果要想成功使用log4j把日志记录进文件,就必须使用log4j专用的记录器:
private final static Logger logger=Logger.getLogger(xxx.class);
参考:
log4j中Logger.getLogger与LogFactory.getLog的区别
log4j优先级:
日志信息的优先级
org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。
Level | 描述 |
---|---|
ALL | 各级包括自定义级别 |
DEBUG | 指定细粒度信息事件是最有用的应用程序调试 |
ERROR | 错误事件可能仍然允许应用程序继续运行 |
FATAL | 指定非常严重的错误事件,这可能导致应用程序中止 |
INFO | 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息 |
OFF | 这是最高等级,为了关闭日志记录 |
TRACE | 指定细粒度比DEBUG更低的信息事件 |
WARN | 指定具有潜在危害的情况 |
对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
log4j详细讲解: