文章标题

来源:互联网 发布:淘宝白底图片怎么拍 编辑:程序博客网 时间:2024/05/30 23:01

需要导入包:

log包:log4j-12.17.jar

第一步:web.xml配置

<!-- log4j配置,文件路径,因为是跟随项目启动 -->    <context-param>        <param-name>log4jConfigLocation</param-name>        <param-value>/WEB-INF/log4j.xml</param-value>    </context-param>    <!-- 配置log4j.xml变量,如果需要动态的就使用下面方式,使用方法${name} -->    <context-param>        <param-name>controller</param-name>        <param-value>controller-log</param-value>    </context-param>    <context-param>        <param-name>loggingLevel</param-name>        <param-value>info</param-value>    </context-param>    <!-- 加载log4j配置文件 -->    <listener>        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    </listener>

第二步log4j.xml配置
先讲解一下核心对象:

logger对象: Logger对象负责捕获日志信息及它们存储在一个空间的层次结构。

Appender对象:下位层提供Appender对象。Appender对象负责发布日志信息,以不同的首选目的地,如数据库,文件,控制台,UNIX系统日志等。

layout对象: 该层提供其用于格式化不同风格的日志信息的对象。布局层提供支持Appender对象到发布日志信息之前。

打个比方:logger是个情报站,负责收集他 所在地方(用name=”xxx包”指定)下的所有信息。appender是发送出去的方式,如写信(FileAppender)、电报(SMTPAppender)等多种。layout就是发送内容以什么格式书写,如自定义格式(PatternLayout),html(HTMLLayout)格式。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">    <!-- ===================================================================== -->    <!-- 以下是appender的定义,定义日志输出的目的地、输出方式及过滤级别        -->    <!-- ===================================================================== -->    <appender name="root-log" class="org.apache.log4j.DailyRollingFileAppender">        <param name="file" value="d://logs/log4j-study.log"/>        <param name="append" value="true"/>        <param name="encoding" value="GBK"/>        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="%d %-5p %l - %m%n"/>        </layout>    </appender>    <appender name="info-log" class="org.apache.log4j.DailyRollingFileAppender">        <param name="file" value="d://logs/info.log"/>        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />         <param name="append" value="true"/>        <param name="encoding" value="GBK"/>        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="%d %m%n"/>        </layout>    </appender>    <appender name="info-log-console" class="org.apache.log4j.ConsoleAppender">        <param name="encoding" value="GBK"/>        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="%m%n"/>        </layout>    </appender>    <!-- 过滤出我们想要的日志信息,实现按照日志等级把日志输出到不同地方的目的 -->    <appender name="error-log" class="org.apache.log4j.DailyRollingFileAppender">        <param name="file" value="d://logs/error.log"/>        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />         <param name="append" value="true"/>        <param name="encoding" value="GBK"/>        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="%d %-5p %l - %m%n"/>        </layout>        <filter class="org.apache.log4j.varia.LevelRangeFilter">         <param name="LevelMin" value="ERROR" />         <param name="LevelMax" value="ERROR" />     </filter>    </appender>    <!-- ===================================================================== -->    <!-- 日志写出器:每一个logger可以有多个输出目的地和输出方式                -->    <!-- ===================================================================== -->    <logger name="info-logger" additivity="false">        <level value="INFO"/>        <appender-ref ref="info-log"/>        <appender-ref ref="info-log-console"/>    </logger>    <logger name="error-logger" additivity="false">        <appender-ref ref="error-log"/>    </logger>    <!-- ===================================================================== -->    <!-- Root logger 所有logger的基类,没有定义的logger将会使用root logger     -->    <!-- ===================================================================== -->   <!--  <root>        <level value="INFO"/>        <appender-ref ref="root-log"/>    </root> --></log4j:configuration>

controller中的代码:

Logger log2 = Logger.getLogger("error-logger");log2.error("带过滤功能的日志写出器,用于过滤error信息。。。");Logger log3 = Logger.getLogger("info-logger");log3.info("info信息。。。");

(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    输出产生该日志事件的线程名

og4j:configuration (root element)

xmlns:log4j [#FIXED attribute] : 定义log4j的名字空间,取定值”http://jakarta.apache.org/log4j/”

appender [* child] : 一个appender子元素定义一个日志输出目的地

logger [* child] : 一个logger子元素定义一个日志写出器

root [? child] : root子元素定义了root logger

appender

appender元素定义一个日志输出目的地。

name [#REQUIRED attribute] : 定义appender的名字,以便被后文引用

class [#REQUIRED attribute] : 定义appender对象所属的类的全名

param [* child] : 创建appender对象时传递给类构造方法的参数

layout [? child] : 该appender使用的layout对象

layout

layout元素定义与某一个appender相联系的日志格式化器。

class [#REQUIRED attribute] : 定义layout对象所属的类的全名

param [* child] : 创建layout对象时传递给类构造方法的参数

logger

logger元素定义一个日志输出器。

name [#REQUIRED attribute] : 定义logger的名字,以便被后文引用

additivity [#ENUM attribute] : 取值为”true”(默认)或者”false”,是否继承父logger的属性

level [? child] : 定义该logger的日志级别

appender-ref [* child] : 定义该logger的输出目的地

root

root元素定义根日志输出器root logger。

param [* child] : 创建root logger对象时传递给类构造方法的参数

level [? child] : 定义root logger的日志级别

appender-ref [* child] : 定义root logger的输出目的地

level

level元素定义logger对象的日志级别。

class [#IMPLIED attribute] : 定义level对象所属的类,默认情况下是”org.apache.log4j.Level类

value [#REQUIRED attribute] : 为level对象赋值。可能的取值从小到大依次为”all”、”debug”、”info”、”warn”、”error”、”fatal”和”off”。当值为”off”时表示没有任何日志信息被输出

param [* child] : 创建level对象时传递给类构造方法的参数

appender-ref

appender-ref元素引用一个appender元素的名字,为logger对象增加一个appender。

ref [#REQUIRED attribute] : 一个appender元素的名字的引用

appender-ref元素没有子元素

param

param元素在创建对象时为类的构造方法提供参数。它可以成为appender、layout、filter、errorHandler、level、categoryFactory和root等元素的子元素。

name and value [#REQUIRED attributes] : 提供参数的一组名值对

param元素没有子元素

原创粉丝点击