日志入门
使用slf4j和log4j来构造日志系统。目标是:(1)按天存放日志(2)不同级别按照不同文件输出
一,slf4j
- 安装
- 下载 slf4j-api-1.7.25.jar,slf4j-log4j12-1.7.25.jar(使用log4j作为具体的日志工具)
- 运行效率
- log4j需要使用类似 logger.isDebugEnabled()来解决字符串拼接的性能消耗,slf4j使用{}来做字符串替换。
二,log4j
- logger: 有日志级别和输出appender两个属性
- 每个logger有且只有一个日志级别。如果单独定义就是定义级别,如果没有单独定义则继承父类的日志级别。----取最小子集
- 每个logger有多个appender。首先会继承父类所有的appender,再加上自己单独定义的appender。----------取最大合集
- properties的配置讲解
- 配置logger
og4j.rootLogger = [ level ] , appenderName1 , appenderName2 -----配置根logger的日志级别和输出目的地
log4j.logger.loggerName = [ level ] , appenderName1 , appenderName2 -----配置名字为loggerName的logger
- 配置Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
-
- 控制台选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
-
- FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
-
- RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
三,实例
- 服务器tomcat配置
### 配置logger名称和日志输出级别 ###
log4j.rootLogger = debug, stdout,errorAppender #根logger现在消息级别是debug,有一个appender,就是stdout,
log4j.logger.org.springframework = warn,warnAppender
log4j.logger.org.apache = warn,warnAppender
log4j.logger.com.mchange = warn, warnAppender
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdout.File = ${catalina.home}/logs/catalina.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{HH:mm:ss} [ %l] - [ %p ] %m%n
### 输出到日志文件 ###
## 输出DEBUG级别以上的日志--------在catalina.out中有debug级别的日志,所以这个可以不用
log4j.appender.warnAppender= org.apache.log4j.DailyRollingFileAppender
log4j.appender.warnAppender.File = /home/logs/kshy/warn.log
log4j.appender.warnAppender.Append = true
log4j.appender.warnAppender.Threshold = WARN ## 输出WARN 级别以上的日志
log4j.appender.warnAppender.LevelMin=debug
log4j.appender.warnAppender.LevelMax=debug
log4j.appender.warnAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.warnAppender.layout.ConversionPattern = %-d{HH:mm:ss} [ %l ] - [ %p ] %m%n
### 保存异常信息到单独文件 ###
## 只输出ERROR级别以上的日志!!!
log4j.appender.errorAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorAppender.File = /home/logs/kshy/error.log
log4j.appender.errorAppender.Append = true
log4j.appender.errorAppender.Threshold = ERROR ## 输出ERROR级别以上的日志
log4j.appender.errorAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.errorAppender.layout.ConversionPattern = %-d{HH:mm:ss} [ %l ] - [ %p ] %m%n