先了解原理,再讲怎么使用
一、log4j的简述
Log4j最主要的三大基本构件:
1.Appenders(定义log信息输出到哪里,如控制台,是指文件中等)
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
2.Layouts(log信息进行格式化,方便阅读)
%m 输出代码中指定的消息;
%M 输出打印该条日志的方法名;
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 输出自应用启动到输出该log信息耗费的毫秒数;
%c 输出所属的类目,通常就是所在类的全名;
%t 输出产生该日志事件的线程名;
%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
3.Categories(对log信息按级别过滤,指定那种级别的信息输出)
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。
日志记录器(Logger)的可用级别Level (不包括自定义级别 Level)
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
WARN level表明会出现潜在错误的情形。
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
FATAL level指出每个严重的错误事件将会导致应用程序的退出
二、使用(这里给出控制台和每日产生一个日志文件的配置)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 日志输出到控制台 -->
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss} %m (%F:%L) \n"/>
</layout>
</appender>
<!-- 日志输出到指定文件 -->
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${htglxt}log/app.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %d{MM-dd HH:mm:ss} %m (%F:%L) \n" />
</layout>
</appender>
<!-- 定义输出的类别 -->
<category name="java.sql">
<priority value="debug" />
</category>
<category name="com.ibatis">
<priority value="error" />
</category>
<!-- 根logger的设置
(这一步很重要,会将上面定义的两种输出方式都加进入,也可以选其一,建议开发过程使用控制台,生 产环境使用文件)
-->
<root>
<priority value ="error"/>
<appender-ref ref="myConsole" />
<appender-ref ref="myFile" />
</root>
</log4j:configuration>
特别注意:上面的配置中的红色标记要特别注意,这里配置的是你的项目根路径,此参数是在wex.xml文件中配置的,名字可以随便命名,这里推荐使用项目名称。
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>htglxt</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
当然输出的位置也可以使用绝对路径,这里不再演示。