您的位置:首页 > 其它

log4j

2015-11-09 16:27 288 查看
在编码中我们会经常使用logj进行某个地方监控,这时候就需要用到log4j了.log4j.xml的模板如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<!--输出方式:输出到控制台-->
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<!--
设置通道名称和输出方式,其中输出方式appender有5种,分别为
org.apache.log4j.RollingFileAppender
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到指定地方)
-->
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<!--
Threshold是个全局的过滤器,他将把低于所设置的level的信息过滤不显示出来
-->

<!-- 设置日志输出的格式-->
<layout class="org.apache.log4j.PatternLayout">

<!--
参数都以%开始后面不同的参数代表不同的格式化信息:
%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  输出产生该日志事件的线程名-->

<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>

<!--输出方式是:每天一个日志文件-->
<!--设置通道名称是:file,输出方式DailyRollingFileAppender-->
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">

<!--日志文件路径和文件名称 -->
<!-- 加../在logs,加/在C盘,不加在bin目录 -->
<!--
如果在加载时设置了变量System.setProperty("WebApp", appRoot),
可在此取出来${WebApp} -->
<param name="File" value="../logs/mylog.log"/>

<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true"/>

<!-- Rollover at midnight each day -->
<!-- e.g. mylog.log.2009-11-25.log -->
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>

<!-- Rollover at the top of each hour
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
-->

<layout class="org.apache.log4j.PatternLayout">

<!--
The default pattern: Date Priority [Category] Message\n
-->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

<!--
The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n -->
<!--
<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
</appender>

<appender name="ERROR_LOG" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="error.log"/>
<param name="Append" value="true"/>
<!-- 指定日志输出级别 -->
<param name="Threshold" value="INFO"/>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>

<!--
level:是日记记录的优先级,优先级由高到低分为
OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这四个级别。
-->

<!-- 指定logger的设置,additivity指示是否叠加输出log,如果是false,
在DsErrorLog logger中日志不会被其它logger满足条件的logger(比如root)
输出
-->
<!-- 将名称为DSErrorLog的logger,输出到“EEROR_LOG”的appender
所谓logger的名字也就是,在定义Logger时,构造函数的参数
Logger log = Logger.getLogger("DSErrorLog");
-->
<logger name="DSErrorLog" additivity="false">
<level class="org.apache.log4j.Level" value="DEBUG"/>
<appender-ref ref="ERROR_LOG"/>
</logger>

<!--
输出指定类包中的日志,比如想输出
Hibernate运行中生成的SQL语句,可作如下设置
-->
<category name="org.hibernate.SQL">
<priority value="DEBUG"/>
<!--
如果指定一个appender,这些log将被输出到指定的appender
如:<appender-ref ref="myFile"/>
否则将作用于所有的appender
-->
</category>

<!--
根默认会自动构建一个 root,输出INFO级别的日志到控制台,供logger继承
-->
<root>
<priority value ="INFO"/>
<appender-ref ref="myConsole"/>
<appender-ref ref="myFile"/>
</root>
</log4j:configuration>


更多配置请看

Log4j XML Configuration
Primer

转自:http://www.cnblogs.com/edwardlauxh/archive/2010/07/22/1918554.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  log4j