VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

LOG4J

  写在最前,其实网上已经有比较好的教程了,基础:http://www.jb51.net/article/44734.htm,回滚,发送日志邮件:http://www.jb51.net/article/77190.htm; 

  配置:http://logging.apache.org/log4j/2.x/manual/configuration.html,http://logging.apache.org/log4j/2.x/manual/appenders.html#RoutingAppender 文档:http://logging.apache.org/log4j/2.x/log4j-api/apidocs/index.html 

  LOG4J是一个用于记录日志的工具包;

  日志级别:从严重程度的重到轻排列:fatal,error,warn,info,debug,trace;LOG4J建议只采用四个日志级别:error,warn,info,debug;

    error:错误信息,需要打日志文件,且发到控制台;

    warn:警告信息,需要打日志文件;

    info:认为有意义的信息,需要打日志文件;

    debug:对程序调试有用的信息;

  有多种形式可配置LOG4J,本文只介绍XML配置方式;

  LOG4J重点在于配置,主要的部分是,日志级别,日志的输出方式,日志的样式,时间;暂时发现,配置文件里不能有注释,不然会出错;

  输出到文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/oh.log"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
          </PatternLayout>
      <Policies>
          <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile> 
    
  </Appenders>
  <Loggers>
    <Root level="error">
          <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

 

  输出到控制台:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
      <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
          <PatternLayout pattern="%m%n"/>
        </Console>
      </Appenders>
      <Loggers>
        <Root level="error">
          <AppenderRef ref="STDOUT"/>
        </Root>
      </Loggers>
    </Configuration>

 

  当然,也可以设置多个Logger:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/oh.log"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
          </PatternLayout>
      <Policies>
          <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile> 
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="com.vv.Test" level="warn" additivity="true">
          <AppenderRef ref="RollingFile"/>
    </Logger>
    <Root level="warn">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

  以上Logger的name不能乱取,需要时一个类名,且一定要有"name"属性,表明在该类中生成Logger将会使用对应的设置,在这个例子里面就是level是warn或者以上的,就会使用名为"RollingFile"的输出方式;

  additivity的值表明是否同时使用Root进行输出,默认为true,即,如上例子设置的话,再Test类中实例化Looger对象,且调用warn(String msg)方法,就会既在控制台输出,也会在文件输出;如果设为false,就只会在文件输出,不会在控制台输出;

  配置文件的路径应该在src包下(不过应该可以设置再其他路径);

  如果像如上的配置文件配置,那么打日志时:logger.warn(String message),会把日志信息既输出到文件,也输出到控制台;

  以上是基本的用法;

 

  

  

 

posted on 2016-04-18 10:06  bobo2018  阅读(142)  评论(0)    收藏  举报