Log4j重点总结
log4j简介
log4j是由java编写的一个日志框架,使用Apache软件许可证,由开源倡议认证一个完全成熟的开源许可证下发布。
log4j是高度可配置的,可根据开发人员的配置来控制日志的输出,目的地包括很多例如:数据库、控制台、储存为文件、或是UNIX的系统日志中。
其主要包括三部分:
- loggers : 负责捕获记录信息
- appenders : 控制日志的发布信息,供其选择不同的目的地
- layout : 控制日志输出的一些格式信息
例如配置文件信息:
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=logs/ssm.log
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
log4j语法
- Appender X 附加器的使用:
# Define the root logger with appender X
log4j.rootLogger = [Level], X
# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender
# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n
X可以任意定义,代表coder为其所取得附加器名称。
Level指:Filter 对象可以分析超出级别的匹配记录信息,并决定是否记录的请求应该由一个特定 Appender 或忽略处理。level分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
下面是一段代码示例:
log4j.rootLogger = DEBUG,Console,File
#控制台日志
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
#普通文件日志
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=logs/ssm.log
log4j.appender.File.MaxFileSize=10MB
#输出日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
根记录器rootLogger绑定了两个附加器Console和File,之后为名为Console和File的Appender配置其他属性。
Appender的属性及其作用:
属性 | 作用 |
---|---|
layout | Appender对象和Layout对象布局管理器格式的对应 |
target | 日志输出的目的地,默认值为:System.out,将日志输出到标准输出设备上,设置其他值是无效的 |
level | 日志的级别,当日志级别大于设置时,才会交给Appender来处理 |
threshold | 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。 |
filter | Filter 对象可以分析超出级别的匹配记录信息,并决定是否记录的请求应该由一个特定 Appender 或忽略处理 |
可选Appender
上部分列出的代码中:Console使用的Appender为ConsoleAppender,File使用的为FileAppender,以下为其他可选的Appender,供使用者选择不同目的地时使用:
AppenderSkeleton
AsyncAppender
ConsoleAppender
DailyRollingFileAppender
ExternallyRolledFileAppender
FileAppender
JDBCAppender
JMSAppender
LF5Appender
NTEventLogAppender
NullAppender
RollingFileAppender
SMTPAppender
SocketAppender
SocketHubAppender
SyslogAppender
TelnetAppender
WriterAppender