简介
log4cxx有三个主要组件:loggers(记录器),appenders(输出源)和layout(布局)。三者的关系:logger包含appenders,appenders包含layout
- logger:日志管理对象,设置日志最低级别,可以设置多个输出源
- appenders:输出到哪里,
- layout:输出的格式
参考链接
https://blog.csdn.net/u012632043/article/details/79746573
Demo
1 2 3 4 5 6 7 8 9 10
| log4j.rootLogger=INFO,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{ABSOLUTE} %5p %c{1}:%L - %m%n
|
logger
rootLogger 为根节点,唯一存在
logger 需声明记录级别,声明输出源
logger 声明
1 2
| log4j.logger.TrackLog=TRACE,default_dts
|
日志级别
1
| TRACE < DEBUG < INFO < WARN < ERROR < FATAL
|
Appender
由类型、类型对应配置,输出格式组成
appender的配置首先要指定类型,不同的类型具体配置不通
appender类型
appender常见类型 |
说明 |
org.apache.log4j.ConsoleAppender |
控制台 |
org.apache.log4j.FileAppender |
文件 |
org.apache.log4j.DailyRollingFileAppender |
每天产生一个日志文件 |
org.apache.log4j.RollingFileAppender |
文件大小达到指定尺寸时产生一个新的文件 |
org.apache.log4j.WriterAppender |
将日志信息以流格式发送到任意指定的地方 |
ConsoleAppender(控制台)
1 2 3
| Threshold = WARN : 指定日志信息的最低输出级别,默认为DEBUG ImmediateFlush = true : 表示所有消息都被立即输出,设为false则不输出, 默认值为true Target = System.err : 默认值是System.out
|
FileAppender(文件)
1 2 3 4
| Threshold = WARD ImmediateFlush = true Append = true : true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true File = D:/logs/logging.log4j : 指定消息输出的文件目录名
|
DailyRollingFileAppender(文件,日期限制)
1 2 3 4 5 6 7 8 9 10
| Threshold = WARD ImmediateFlush = true Append = true File = D:/logs/logging.log4j DatePattern = '.'yyyy-MM : 每个月生成一个新的日志文件 '.'yyyy-ww : 每周 '.'yyyy-MM-dd:每天 '.'yyyy-MM-dd-a:每天a次 '.'yyyy-MM-dd-HH:每小时 '.'yyyy-MM-dd-HH-mm : 每分钟
|
RollingFileAppender(文件,文件大小限制)
1 2 3 4 5 6
| Threshold = WARD ImmediateFlush = true Append = true File = D:/logs/logging.log4j MaxFileSize = 100KB MaxBackupIndex = 2
|
Layout
先设置类型,在根据类型设置对应的配置,SimpleLayout、TTCCLayout,不需要配置。HTMLLayout一般不用
Layout类型
说明 |
类型 |
HTML样式 |
org.apache.log4j.HTMLLayout |
自由指定样式 |
org.apache.log4j.PatternLayout |
包含日志级别和信息字符串的样式 |
org.apache.log4j.SimpleLayout |
包含日志产生的时间、线程、类别等信息 |
org.apache.log4j.TTCCLayout |
PatternLayout配置
1 2 3 4
| log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
|
格式化符号 |
说明 |
%p |
输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL |
%d |
输出日志时间点的日期或时间,默认格式为ISO8601,也可以指定格式,eg.%d{yyyy/MM/dd HH:mm:ss,SSS}。 |
%r |
输出自应用程序启动到输出到该log信息耗费额毫秒数 |
%t |
输出产生该日志事件的线程名 |
%l |
输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名及在代码行中的行数。 |
%c |
logger所属类的全名,最小长度是20,若名称长度小于20,默认右对齐。 |
%M |
输出产生日志信息的方法名 |
%F |
输出日志消息产生时所在的文件名称 |
%L |
输出代码中的行号 |
%m |
输出logger的日志消息,eg.LOG4CXX_DEBUG(m_logger,”日志消息”) |
%n |
输出一个回车换行符,windows平台为”\r\n”,Unix平台为”\n” |
%x |
输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中 |
%% |
输出一个”%”字符 |
设置文本格式
可以在%与格式字符之间加上修饰符,来控制最小长度、最大长度、文本对齐方式。如:
%-20c : “-“号表示左对齐
%.30c : 指定%c最大长度为30,若大于30,会将左边多出来的字符截掉,但小于30也不会补空格
配置子Logger
1 2 3 4
| log4j.logger.childLogger = DEBUG,apname
log4j.additivity.childLogger = false
|
输出到socket
1 2 3 4
| log4j.appender.socket=org.apache.log4j.RollingFileAppender log4j.appender.socket.RemoteHost=localhost log4j.appender.socket.Port=5001 log4j.appender.socket.LocationInfo=true
|