当前位置: 首页 > 工具软件 > log4cxx > 使用案例 >

log4cxx

韩捷
2023-12-01

简介

log4cxx有三个主要组件:loggers(记录器),appenders(输出源)和layout(布局)。三者的关系:logger包含appenders,appenders包含layout

  • logger:日志管理对象,设置日志最低级别,可以设置多个输出源
  • appenders:输出到哪里,
  • layout:输出的格式

参考链接

https://blog.csdn.net/u012632043/article/details/79746573

Demo

# 设置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

logger

rootLogger 为根节点,唯一存在
logger 需声明记录级别,声明输出源

logger 声明

#  声明了一个名为TrackLog的logger,最低级别TRACE,输出源名为default_dts
log4j.logger.TrackLog=TRACE,default_dts  

日志级别

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(控制台)

Threshold = WARN : 指定日志信息的最低输出级别,默认为DEBUG
ImmediateFlush = true : 表示所有消息都被立即输出,设为false则不输出, 默认值为true
Target = System.err : 默认值是System.out

FileAppender(文件)

Threshold = WARD 
ImmediateFlush = true
Append = true : true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true
File = D:/logs/logging.log4j : 指定消息输出的文件目录名

DailyRollingFileAppender(文件,日期限制)

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(文件,文件大小限制)

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

Layout

先设置类型,在根据类型设置对应的配置,SimpleLayout、TTCCLayout,不需要配置。HTMLLayout一般不用

Layout类型

说明类型
HTML样式org.apache.log4j.HTMLLayout
自由指定样式org.apache.log4j.PatternLayout
包含日志级别和信息字符串的样式org.apache.log4j.SimpleLayout
包含日志产生的时间、线程、类别等信息org.apache.log4j.TTCCLayout

PatternLayout配置

 # 输出格式类型为自由指定样式
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)的组合,包括类全名、方法、文件名及在代码行中的行数。
%clogger所属类的全名,最小长度是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

# 在配置文件中定义一个子logger的代码,apname为childlogger使用的appender
log4j.logger.childLogger = DEBUG,apname     
# 设置子logger的继承属性设置为false
log4j.additivity.childLogger = false

输出到socket

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                                 #是否显示类名和行数
 类似资料:

相关阅读

相关文章

相关问答