虽然一直在用log4j,但是实际对它还不够了解,今天做下笔记。
文章目录
- rootLogger
- appender
- console
- FileAppender
- FileAppender
- RollingFileAppender
- DailyRollingFileAppender
- 设置年月日
- appender 日志格式
- 日志级别
- 其他
- log4j区分大小写吗
- log4j和slf4j的区别
rootLogger
语法:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
示例:
log4j.rootLogger = INFO , CONSOLE, appenderName, …
也就是说后面可以跟日志级别,以及记录期名称。
appender
appender是log4j中很重要的一个元素。叫:追加器,日志记录期 都行。 主要负责日志的输出。
常见的有console、fileAppender2类。
console
标准控制台输出。
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
当然也可以自定义名称。
#Console2
log4j.appender.Console2=org.apache.log4j.ConsoleAppender
log4j.appender.Console2.layout=org.apache.log4j.PatternLayout
log4j.appender.Console2.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
FileAppender
FileAppender
#File
log4j.appender.File = org.apache.log4j.FileAppender # 哪种appender
log4j.appender.File.File = d://log4j2.log # appender 文件名
log4j.appender.File.layout = org.apache.log4j.PatternLayout # appender的布局
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n # appender的布局格式
RollingFileAppender
log4j.rootCategory=info, Console,File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/portal.log
log4j.appender.R.Encoding=GBK
log4j.appender.R.MaxFileSize=256KB
log4j.appender.R.Append=true
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
DailyRollingFileAppender
log4j.rootCategory=INFO, CONSOLE,DailyRolling
log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRolling.File=${catalina.base}/logs/portal.log
log4j.appender.DailyRolling.DatePattern=yyyy-MM-dd'.log'
log4j.appender.DailyRolling.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyRolling.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
设置年月日
'.'yyyy-MM-dd'.log' 按天生成,这个用的最多
'.'yyyy-MM-dd-HH'.log' 按小时生成
'.'yyyy-MM-dd-HH-mm'.log' 按分钟生成
appender 日志格式
appender日志格式
%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 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数 注:实测无效,报错%PARSER_ERROR[l]
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该log信息所耗费的毫秒数 注:是项目启动,到打印当前日志的时间,没什么意义,所以一般用不到
%t 输出产生该日志事件的线程名
%
百分号是什么意思? 通常用来表示变量。
那么%X
呢,一般用来表示自定义变量。如:%X{requestId}
日志级别
略。
其他
log4j区分大小写吗
好问题。
log4j和slf4j的区别
slf4j是日志接口,是抽象的。 他可以有多种实现方式,例如log4j,logback等。
log4j是slf4j的一种实现。