日志管理--log4j

来源:互联网 发布:行而知天下 编辑:程序博客网 时间:2024/05/20 22:27

使用log4j需要先导入log4j的jar包,下载地址log4j官网。首先需要新建log4j.properties的配置文件,直接放在src目录下,或者新建一个与src并列的etc文件夹。用来存放配置文件。
配置log4j.properties

log4j.appender.xing=org.apache.log4j.ConsoleAppenderlog4j.appender.xing.layout=org.apache.log4j.PatternLayoutlog4j.appender.xing.layout.ConversionPattern=[%p](%d{yyyy-MM-dd HH:mm:ss,SSS})---%l--%m\r\nlog4j.rootLogger=INFO,xing
  1. log4j.appender.xing=org.apache.log4j.ConsoleAppender是配置日志文件的输出地方,这里是ConsoleAppender控制台。其中xing是appender的名字,可以自己命名。
    除此之外还有其他的输出目的地:
    log4j.appender.xing=org.apache.log4j.ConsoleAppende 控制台输出
    log4j.appender.xing=org.apache.log4j.FileAppender 文件输出
    org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
  2. log4j.appender.xing.layout=org.apache.log4j.PatternLayout配置日志输出布局,一般为org.apache.log4j.PatternLayout可以灵活设置输出格式,其他还有
    HTMLLayout 格式化日志输出为HTML表格
    SimpleLayout 以一种非常简单的方式格式化日志输出
  3. log4j.appender.xing.layout.ConversionPattern=[%p](%d{yyyy-MM-dd HH:mm:ss,SSS})—%l–%m\r\n 指定输入格式,其中各个字符的意思为:
    %m 输出代码中指定的消息
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
    %r 输出自应用启动到输出该log信息耗费的毫秒数
    %c 输出所属的类目,通常就是所在类的全名
    %t 输出产生该日志事件的线程名
    %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
    HH:mm:ss , SSS}
    %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
  4. log4j.rootLogger=INFO,xing,表示数据的级别和输出源。输出日志的级别有DEBUG、INFO、WARN、ERROR、FATAL五种,这五个级别的顺序是DEBUG、INFO、WARN、ERROR、FATAL依次增高。
    它的规则:如果定义的是info则输出比info级别高的,低的将被屏蔽到不输出。

使用logger

package com.xingguo.action;import org.apache.log4j.Logger;import com.xingguo.entity.User;import com.xingguo.service.UserService;public class UserAction extends BaseAction{    private static final long serialVersionUID = 1L;    private Logger log = Logger.getLogger(UserAction.class);    public String loginForm(){        log.debug("logger....debug");        log.info("logger....info");        log.warn("logger....warn");        log.error("logger....error");        log.fatal("logger....fatal");        return SUCCESS;    }   }

输入结果如下:

[INFO](2015-07-20 14:48:03,823)---com.xingguo.action.UserAction.loginForm(UserAction.java:21)--logger....info[WARN](2015-07-20 14:48:03,825)---com.xingguo.action.UserAction.loginForm(UserAction.java:22)--logger....warn[ERROR](2015-07-20 14:48:03,825)---com.xingguo.action.UserAction.loginForm(UserAction.java:23)--logger....error[FATAL](2015-07-20 14:48:03,826)---com.xingguo.action.UserAction.loginForm(UserAction.java:24)--logger....fatal

只输出了比info级别高的日志。

以文件的形式输出

log4j.appender.lout=org.apache.log4j.FileAppenderlog4j.appender.lout.layout=org.apache.log4j.PatternLayoutlog4j.appender.lout.layout.ConversionPattern=[%p](%d)---%l--%m\r\nlog4j.appender.lout.file=C:/logs/struts2.loglog4j.rootLogger=INFO,lout,xing

一般日志输出到一个文件中,时间长了会很大。所以一般采用一天生成一个文件。

log4j.appender.lout=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.lout.layout=org.apache.log4j.PatternLayoutlog4j.appender.lout.layout.ConversionPattern=[%p](%d)---%l--%m\r\nlog4j.appender.lout.DatePattern='.'yyyy-MM-ddlog4j.appender.lout.Threshold=ERROR log4j.appender.lout.file=C:/logs/struts2.loglog4j.rootLogger=INFO,lout,xing

log4j.appender.lout.DatePattern=’.’yyyy-MM-dd为文件名的格式
log4j.appender.lout.Threshold=ERROR 级别超过error的写入文件,低级别的在控制台输出

0 0