日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。
日志级别说明
每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warn 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G: trace designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用
H:all 最低等级,用于打开所有日志记录。
maven依赖包
<!-- log4j support -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>2.14.1</version>
</dependency>
配置说明
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout, file
### log messages to 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=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Append=true
log4j.appender.file.Threshold=INFO
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
说明:
1.log4j.rootLogge=debug 在tomcat的catalina.log 中会以debug的级别打印日志
如果不需要太详细的日志信息可以使用info
2.log4j.appender.file.Threshold=INFO 日志文件中打印INFO级的信息,赋值debug,将会将debug的信息打印在项目路径下。这个不受上述1的影响
类中引用
protected Logger log = LoggerFactory.getLogger(this.getClass());
定制化应用,自定义日志的加载路径,不同的类打在不同的日志文件下的方式
1.文件加载方式如下
protected Logger log = LoggerFactory.getLogger("xxTest");
2.配置文件中添加如下
log4j.logger.xxTest=INFO,info
log4j.additivity.xxTest= true
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.File=/opt/test/info.log
log4j.appender.info.Append=false
log4j.appender.info.Threshold=INFO
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
注意:如果需要定制Debug或者Error的路径,将log4j.logger.xxTest改为DEBUG,debug或ERROR,error即可!