通过百度我们轻松的看到log4j分为 OFF 、FATAL 、ERROR、WARN 、INFO 、DEBUG 、TRACE 、ALL几个级别,对应如下
级别 | 作用 |
---|---|
ALL | 所有级别包括自定义级别 |
DEBUG | 调试消息日志 |
ERROR | 错误消息日志,应用程序可以继续运行 |
FATAL | 严重错误消息日志,必须中止运行应用程序 |
INFO | 信息消息 |
OFF | 最高可能的排名,旨在关闭日志记录 |
TRACE | 很低的日志级别,一般不会使用 |
WARN | 用于警告消息 |
其中一般情况下推荐使用DEBUG、INFO、WARN、ERROR和FATAL五种,他们对应的级别关系为
DEBUG
我们通过控制应用程序中日志信息的级别来打印需要的日志。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。
那如何配置log4j呢,如下代码:
root、category、appender、level这些标签的作用是什么,下面让我们来一一解答。
首先,appender是配属日志输出目的地,输出日志信息到指定位置。Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个配置中可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。具体如下:
appender | 输出位置 |
---|---|
org.apache.log4j.ConsoleAppender | 控制台 |
org.apache.log4j.FileAppender | 文件 |
org.apache.log4j.DailyRollingFileAppender | 每天产生一个日志文件 |
org.apache.log4j.RollingFileAppender | 文件大小到达指定尺寸的时候产生一个新的文件 |
org.apache.log4j.WriterAppender | 将日志信息以流格式发送到任意指定的地方 |
root和category都是通过如appender-ref ref="CONSOLE"
执行具体appender中的日志策略,配置哪个appender执行哪个。
其中,root是控制整个工程的日志,category的name,指定的是控制某个包下的日志 , 可以按照业务逻辑进行日志分类输出打印。root和category是父子关系,root标签可以不写,category也可以不写 , 但是必须写一个。
category的属性additivity="false"表示在category中定义日志输在root中过滤掉。如上例中com.ab.service.sdk
包和com.ab.service.sdk.dao
包下的日志只打印到控制台,日志级别分别为DEBUG和INFO。而工程下其它日志级别为ERROR,打印到控制台和/export/Logs/Domains/service.trade.lcoal/server1/logs/service.log
文件中。