log4cxx有三个主要组件:loggers(记录器),appenders(输出源)和layout(布局)。三者的关系:logger包含appenders,appenders包含layout
https://blog.csdn.net/u012632043/article/details/79746573
# 设置rootLogger(root是唯一的),最低级别为INFO,输出源名为stdout
log4j.rootLogger=INFO,stdout
# 设置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
rootLogger 为根节点,唯一存在
logger 需声明记录级别,声明输出源
# 声明了一个名为TrackLog的logger,最低级别TRACE,输出源名为default_dts
log4j.logger.TrackLog=TRACE,default_dts
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
由类型、类型对应配置,输出格式组成
appender的配置首先要指定类型,不同的类型具体配置不通
appender常见类型 | 说明 |
---|---|
org.apache.log4j.ConsoleAppender | 控制台 |
org.apache.log4j.FileAppender | 文件 |
org.apache.log4j.DailyRollingFileAppender | 每天产生一个日志文件 |
org.apache.log4j.RollingFileAppender | 文件大小达到指定尺寸时产生一个新的文件 |
org.apache.log4j.WriterAppender | 将日志信息以流格式发送到任意指定的地方 |
Threshold = WARN : 指定日志信息的最低输出级别,默认为DEBUG
ImmediateFlush = true : 表示所有消息都被立即输出,设为false则不输出, 默认值为true
Target = System.err : 默认值是System.out
Threshold = WARD
ImmediateFlush = true
Append = true : true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true
File = D:/logs/logging.log4j : 指定消息输出的文件目录名
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 : 每分钟
Threshold = WARD
ImmediateFlush = true
Append = true
File = D:/logs/logging.log4j
MaxFileSize = 100KB #文件达到该大小时,会自动滚动,即将原来的内容移到logging.log4j.1文件中
MaxBackupIndex = 2 #指定可以产生滚动文件的最大数,例如,设为2则可以产生logging.log4j.1, logging.log4j.2两个滚动文件和一个log
先设置类型,在根据类型设置对应的配置,SimpleLayout、TTCCLayout,不需要配置。HTMLLayout一般不用
说明 | 类型 |
---|---|
HTML样式 | org.apache.log4j.HTMLLayout |
自由指定样式 | org.apache.log4j.PatternLayout |
包含日志级别和信息字符串的样式 | org.apache.log4j.SimpleLayout |
包含日志产生的时间、线程、类别等信息 | org.apache.log4j.TTCCLayout |
# 输出格式类型为自由指定样式
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的代码,apname为childlogger使用的appender
log4j.logger.childLogger = DEBUG,apname
# 设置子logger的继承属性设置为false
log4j.additivity.childLogger = false
log4j.appender.socket=org.apache.log4j.RollingFileAppender
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.Port=5001
log4j.appender.socket.LocationInfo=true #是否显示类名和行数
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.Port=5001
log4j.appender.socket.LocationInfo=true #是否显示类名和行数