参考博文:http://www.blogjava.net/zzzlyr/articles/353039.html
这几天一直在用logger记录日志,但一直不明白log4j.properties配置文件意思,下面看看其他博主文章给自己充充电。
本人认为日志记录不仅可以帮记录执行结果,看代码执行是否正常,并且在排查问题时也能很快帮助你定位有问题代码。
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UpdateOrderStatusJob { private static Logger logger = LoggerFactory.getLogger(UpdateOrderStatusJob.class);
SLF4J经典应用:占位符
SLF4J的日志消息使用占位符"{}"代替了常用的字符串拼接,据官方说这样速度更快:
String address = "world"; logger.info("Hello {}",address ); // Hello world
注意:
1、#日记记录的优先级(低到高):
# 控制台显示的内容是:优先级大于等于log4j.properties中配置的信息。
# ALL< DEBUG < INFO < WARN < ERROR < FATAL < OFF.
# Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。
# ERROR 为严重错误 主要是程序的错误
# WARN 为一般警告,比如session丢失
# INFO 为一般要显示的信息,比如登录登出
# DEBUG 为程序的调试信息
Log4j配置:
第一步:准备
1、slf4j-api-1.7.5.jar
2、slf4j-log4j12-1.7.5.jar
3、log4j-1.2.16.jar
4、log4j.properties(也可以是 log4j.xml,本例中用 log4j.propertes)
第二步:maven依赖jar包
第三步:在resource中配置log4j.properties配置文件。
#配置根Logger log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , … #配置日志信息输出目的地Appender log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局) log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j.appender.appenderName.layout.optionN = valueN
appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。例:
# Global logging configuration log4j.rootLogger=info,stdout, R # 应用于控制台 #Root Logger Configuration log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{HH\:mm\:ss} %c{1} - %m%n #应用于日志文件 log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=mat.log log4j.appender.R.MaxFileSize=5MB log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n
log4j.rootLogger=info,stdout, R 定义 logger记录大于等于info优先级日志信息,stdout表示在控制台显示,R表示日志记录在文件中。
stdout:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 意思是把日志输出到控制台
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 意思是日志在控制台显示布局模式
log4j.appender.stdout.layout.ConversionPattern=%d{HH\:mm\:ss} %c{1} - %m%n 表示日志输出的格式,%d{HH\:mm\:ss} %c{1} - %m%n表示时:分:秒 类名 日志信息 换行
R:
log4j.appender.R=org.apache.log4j.RollingFileAppender :日志文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.R.File=mat.log 表示是放日志文件的路径
log4j.appender.R.MaxFileSize=5MB 表示指定日志文件大小
log4j.appender.R.layout=org.apache.log4j.PatternLayout 日志记录的布局模式
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n 表示日志输出格式
年-月-日 时:分:秒 类名 优先级显示日志信息 换行
#appender名字定义
#appender名字定义
log4j.rootLogger=INFO,FILE,consoleAppender,RollingFile,MAIL,DailyRollingFile,DATABASE
log4j.addivity.org.apache=true
#配置日志信息输出目的地
#log4j.appender.appenderName = fully.qualified.name.of.appender.class
#(如:log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender)
# 1.org.apache.log4j.ConsoleAppender(控制台)
# 2.org.apache.log4j.FileAppender(文件)
# 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
# 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
# 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
#配置日志信息的格式
#log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
#(如:log4j.appender.RollingFile.layout = org.apache.log4j.HTMLLayout)
# 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
# 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
# 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
# 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
#输出格式: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 输出产生该日志事件的线程名
#ConsoleAppender,控制台输出
#FileAppender,文件日志输出
#SMTPAppender,发邮件输出日志
#SocketAppender,Socket日志
#NTEventLogAppender,Window NT日志
#SyslogAppender,
#JMSAppender,
#AsyncAppender,
#NullAppender
第三步:下次再写