Log4J的配置

Log4J简介
日志记录功能是一个项目中重要的组成部分,Log4J是APache下的一个开源日志组件,为java开发者提供了很大的便利。

Loggers,日志信息的优先级
日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度,设置为高级别的优先级时,低优先级的日志将不会输出,比如将日志级别设置为INFO,则DEBUG级别的目录不会被记录,为了防止日志输出泛滥,最好不要将日志级别设置太低,一般为INFO即可。

Appenders,日志信息的输出目的地
日志信息的输出目的地指定了日志将打印到控制台还是文件中,参数如下:
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件,本文中的案例选择的策略)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,也是一个不错的选择)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layouts,日志信息的输出格式
输出格式的功能是控制日志信息的显示内容,参数如下:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式,本案例所选择的策略,需对日志格式进行设置)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Log4J的输出格式 :

layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该log信息所耗费的毫秒数
%t 输出产生该日志事件的线

 Log4J配置文件 :   

# 配置根Logger
# level是指 日志的输出级别 ,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。
# appenderName 就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。
log4j.rootLogger  =   [ level ] , appenderName, appenderName, … 

# 定义日志输出目的地
# appenderName就是指日志输出的目的地,和log4j.rootLogger中的相同。
log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender

# org.apache.log4j.ConsoleAppender (控制台)
# org.apache.log4j.FileAppender (文件)
# org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
# org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
# org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

# 设置文件输出路径  mylog为日志文件的文件名,路径为根目录下的logs文件夹下的mylog.log文件
log4j.appender.appenderName.file=../logs/mylog.log

# 当天的日志是mylog.log,当天过去之后,mylog.log就会重命名为mylog_yyyy-MM-dd.log ,yyyy-MM-dd为当天的日期
log4j.appender.appenderName.DatePattern='_'yyyy-MM-dd'.log'

# 配置日志信息的格式(布局)
log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout  

# org.apache.log4j.HTMLLayout (以 HTML 表格形式布局)
# org.apache.log4j.PatternLayout (可以灵活地指定布局模式)
# org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串)
# org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)

# 日志信息输出格式 
# [日期] 日志级别  全路径类名 行号 日志信息 
log4j.appender.appenderName.layout.ConversionPattern=  [%d{yyyy-MM-dd HH\:mm\:ss}] %-5p %c  %L -%m%n

# layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):

# - X 号 : X 信息输出时左对齐; 
# %p: 输出日志信息优先级,即 DEBUG , INFO , WARN , ERROR , FATAL,
# %d: 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS}
# %r: 输出自应用启动到输出该 log 信息耗费的毫秒数 
# %c: 输出日志信息所属的类目,通常就是所在类的全名 
# %t: 输出产生该日志事件的线程名 
# %l: 输出日志事件的发生位置,相当于 %C.%M(%F:%L) 的组合 , 包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
# %x: 输出和当前线程相关联的 NDC( 嵌套诊断环境 ), 尤其用到像 Java servlets 这样的多客户多线程的应用中。 
# %%: 输出一个 "%" 字符 
# %F: 输出日志消息产生时所在的文件名称 
# %L: 输出代码中的行号 
# %m: 输出代码中指定的消息 , 产生的日志具体信息 
# %n: 输出一个回车换行符, Windows 平台为 "/r/n" , Unix 平台为 "/n" 输出日志信息换行 


# 设置日志字符集编码格式 
log4j.appender.appenderName.encoding=utf-8

# 设置日志的输出级别,和log4j.rootLogger里面的相比 取级别高的。
log4j.appender.appenderName.Threshold = ERROR

# 设置日志文件最大尺寸
log4j.appender.ROLLING_FILE.MaxFileSize=10MB   



#ex:

log4j.rootLogger = ERROR , appenderName , Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= [%d{yyyy-MM-dd HH\:mm\:ss}] %-5p %c %L -%m%n

log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender
log4j.appender.appenderName.file=../logs/mylog.log
log4j.appender.appenderName.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout
log4j.appender.appenderName.layout.ConversionPattern= [%d{yyyy-MM-dd HH\:mm\:ss}] %-5p %c %L -%m%n
log4j.appender.appenderName.encoding=utf-8
log4j.appender.appenderName.Threshold = ERROR
log4j.appender.ROLLING_FILE.MaxFileSize=10MB

java 中的应用

private static Logger logger = Logger.getLogger(this.getClass().getName);

    Logger.debug(Object message);  // 调试信息 
   Logger.info(Object message);   // 一般信息 
   Logger.warn(Object message);   // 警告信息 
   Logger.error(Object message);  // 错误信息 

 

posted @ 2017-04-19 12:47  倾默  阅读(247)  评论(0编辑  收藏  举报