首页

Log4j配置与应用说明(图文)

标签:log4j包,日志,设计原理,配置,jar,loggers,appenders,layouts,common-logging包     发布时间:2016-07-07   

 一、Log4j组件图

log4j主要由三大组件组成:loggers,appenders和layouts,如下图所示

Log4j配置与应用说明(图文)

1、定义logger组件

logger可以设置一个或者多个appender,表示输出目的地,默认情况下,表示未被分配level的logger将继承离他最近的父logger的所有appenders。该选项可以被重新设置,表示子logger将不再继承父logger的appenders,如下所示

//a、配置root Logger的语法@b@log4j.rootLogger=[priority],appenderName,appenderName,...@b@//如:log4j.rootLogger=INFO,stdout,R@b@//b、自定义Logger组件的语法@b@log4j.logger.loggerName=[priority],appenderName,appenderName,...@b@//如:log4j.logger.myLogger=WARN - 日志等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息@b@//c、继承配置@b@log4j.apache.myLogger.mySonLogger=INFO@b@//d、以包为单位指定日志等级@b@log4j.logger.org.apache.struts=WARN  //指定struts 包下的所有类的等级为WARN。@b@log4j.logger.com.xwood=DEBUG //设置开发包路径com.xwood等级DEBUG

代码注册对象示例,1中的LogFactory(org.apache.commons.logging)引入common-logging包(1.1.31.1下载),2或3中的Logger(org.apache.log4j)的log4j包(1.2.141.2.11下载)

//1、使用org.apache.commons.logging.Log类:@b@private final Log log = LogFactory.getLog(getClass());@b@//2、使用log4j的Logger类,获得rootLogger@b@Logger rootLogger=Logger.getRootLogger();­ @b@//3、获得自定义Logger@b@Logger myLogger =Logger.getLogger("log4j.logger.myLogger");­

2、Appender类型(配置输出目的地)

◇     ConsoleAppender:输出到System.out(默认)或者System.err@b@◇     DailyRollingFileAppender:FileAppender扩展,按给定频率循环记录日志文件@b@◇     FileAppender:日志写入指定文件@b@◇     RollingFileAppender:FileAppender扩展,按指定容量循环记录日志文件@b@◇     SMTPAppender:发送邮件

3、设置布局layout

3.1.配置输出端布局类型layout,格式及分类如下

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

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

3.2.具体格式设置ConversionPattern

log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

◇   [QC]是log信息的开头,如cms系统,可以任意自定义名称@b@◇    %p:信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL@b@◇    %d:日期和时间,如%d{yyyy-mm-dd hh:mm:ss.SSS},输出类似:2002年10月18日 22:10:28,921@b@◇    %r:应用启动以来的毫秒数@b@◇    %c(i):当前类名@b@◇    %t:当前线程名@b@◇    %%: 输出一个"%"字符@b@◇    %F: 输出日志消息产生时所在的文件名称@b@◇    %l:输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)@b@◇    %L:当前行号@b@◇    %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中@b@◇    %m:输出代码中指定的消息,产生的日志具体信息@b@◇    %n:输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式@b@◇    %20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐@b@◇    %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐@b@◇    %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格@b@◇    %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉

二、Logger等级及保存周期

◇    DEBUG:程序调试中的便于观察的过程信息。@b@◇    INFO:业务操作人员、操作过程、操作内容等信息。@b@◇    WARN:可以预见的错误且有相应的业务处理。@b@◇    ERROR:非预期的Exception信息,比如数据库连接异常。@b@◇    FATAL:进程、服务等非正常关闭、无法启动;配置参数无法正常使用。

Log4j配置与应用说明(图文)

◇   为开发者分析的日志:Logger Level为DEBUG,每日生成,保留7天。@b@◇   为业务追踪分析的日志:Logger Level为INFO,每日生成,保留60天。@b@◇   为系统问题分析的日志:Logger Level为WARN,每周生成一个日志,保留1年。@b@◇   日志形式类似"[%d{yyyy-MM-dd HH:mm:ss.SSS} %p] [%t] %c{5} - %m%n"

三、配置案例

1. properties配置

log4j.rootLogger=DEBUG,CONSOLE,DATABASE,FILE,ROLLING_FILE@b@log4j.addivity.org.apache=true@b@@b@# 应用于控制台@b@log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender@b@log4j.appender.CONSOLE.Threshold=INFO@b@log4j.appender.CONSOLE.Target=System.out@b@log4j.appender.CONSOLE.Encoding=GBK@b@log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout@b@log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t]%-5p %c %x - %m%n@b@@b@# 用于数据库@b@log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender@b@log4j.appender.DATABASE.URL=jdbc:oracle:thin:@90.0.12.20:1521:ORCL@b@log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver@b@log4j.appender.DATABASE.user=Nation@b@log4j.appender.DATABASE.password=1@b@log4j.appender.CONSOLE.Threshold=WARN@b@log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread,infolevel,class,messages) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l','%m')@b@# INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c%x - %m%n')@b@# 写入数据库中的表LOG4J的Message字段中,内容%d(日期)%c:日志信息所在地(类名)%p:日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行@b@log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout@b@log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t]%-5p %c %x - %m%n@b@@b@#应用于文件@b@log4j.appender.FILE=org.apache.log4j.FileAppender@b@log4j.appender.FILE.File=C:/log4j/file.log@b@log4j.appender.FILE.Append=false@b@log4j.appender.FILE.Encoding=GBK@b@log4j.appender.FILE.layout=org.apache.log4j.PatternLayout@b@log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p%c %x - %m%n@b@@b@# 应用于文件回滚@b@log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender@b@log4j.appender.ROLLING_FILE.Threshold=ERROR@b@log4j.appender.ROLLING_FILE.File=rolling.log@b@log4j.appender.ROLLING_FILE.Append=true@b@log4j.appender.ROLLING_FILE.Encoding=GBK@b@log4j.appender.ROLLING_FILE.MaxFileSize=10KB@b@log4j.appender.ROLLING_FILE.MaxBackupIndex=1@b@log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout@b@log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r[%t] %-5p %c %x - %m%n@b@@b@# 每天新建日志@b@log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender@b@log4j.appender.A1.File=C:/log4j/log@b@log4j.appender.A1.Encoding=GBK@b@log4j.appender.A1.Threshold=DEBUG@b@log4j.appender.A1.DatePattern='.'yyyy-MM-dd@b@log4j.appender.A1.layout=org.apache.log4j.PatternLayout@b@log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n@b@@b@#自定义Appender@b@log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender@b@log4j.appender.im.host = mail.cybercorlin.net@b@log4j.appender.im.username = username@b@log4j.appender.im.password = password@b@log4j.appender.im.recipient = corlin@cybercorlin.net@b@log4j.appender.im.layout=org.apache.log4j.PatternLayout@b@log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p%c %x - %m%n@b@@b@#应用于socket@b@log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender@b@log4j.appender.SOCKET.RemoteHost=localhost@b@log4j.appender.SOCKET.Port=5001@b@log4j.appender.SOCKET.LocationInfo=true@b@log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout@b@log4j.appender.SOCKET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n@b@@b@# LogFactor 5 Appender@b@log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender@b@log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000@b@log4j.appender.LF5_APPENDER.layout=org.apache.log4j.PatternLayout@b@log4j.appender.LF5_APPENDER.layout.ConversionPattern =[framework] %d - %c -%-4r[%t] %-5p %c %x - %m%n@b@@b@# 发送日志给邮件@b@log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender@b@log4j.appender.MAIL.Threshold=FATAL@b@log4j.appender.MAIL.BufferSize=10@b@log4j.appender.MAIL.From=web@www.wuset.com@b@log4j.appender.MAIL.SMTPHost=www.wusetu.com@b@log4j.appender.MAIL.Subject=Log4J Message@b@log4j.appender.MAIL.To=web@www.wusetu.com@b@log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout@b@log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t]%-5p %c %x - %m%n

2. xml配置

Log4j配置与应用说明(图文)

  • ◆ 相关内容