Fork me on GitHub

Log4j配置

官网 http://logging.apache.org/log4j/2.x/download.html
约定: 
http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticReconfiguration
扩展: 
http://logging.apache.org/log4j/2.x/manual/appenders.html#JMSTopicAppender

注意:“Note that unlike Log4j 1.x, the public Log4j 2 API does not expose methods to add, modify or remove appenders and filters or manipulate the configuration in any way”

基本概念

(0). LOG4 J主要由三大组件组成:
        Logger: 决定什么日志信息应该被输出、什么日志信息应该被忽略;
        Appender: 指定日志信息应该输出到什么地方, 这些地方可以是控制台、文件、网络设备;
        Layout: 指定日志信息的输出格式;

     一个Logger可以有多个Appender,也就是说日志信息可以同时输出到多个设备上,每个Appender对应一种Layout

(1). 输出方式appender一般有5种:

             org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
             org.apache.log4j.ConsoleAppender (控制台)  
             org.apache.log4j.FileAppender (文件)
             org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
             org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

(2). 日记记录的优先级priority,优先级由高到低分为
            OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
            Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

(3). 格式说明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       输出产生该日志事件的线程名

一般用法

xml方式

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </Console>
        <RollingFile name="RollingFile" fileName="logs/springmvc.log"
            filePattern="logs/$${date:yyyy-MM-dd}/springmvc-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{yyyy/MM/dd HH:mm:ss .SSS} => %-5level %class{36} %L %M -
                    %msg%xEx%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="6"
                    modulate="true" />
                <SizeBasedTriggeringPolicy size="5 MB" />
            </Policies>
            <DefaultRolloverStrategy max="50" />
        </RollingFile>
    </appenders>
    <loggers>
        <root level="INFO">
            <appender-ref ref="Console" />
            <appender-ref ref="RollingFile" />
        </root>
    </loggers>
</configuration>

新版中好像没有Email的支持,不知道为什么

image

Refer:
http://www.blogjava.net/thisliy/archive/2009/06/01/279377.html
http://blog.csdn.net/lrenjundk/article/details/8178875

posted @ 2013-01-31 23:59  花儿笑弯了腰  阅读(476)  评论(0编辑  收藏  举报