我们目前开发 使用的是maven项目管理,框架使用的是spring + spring MVC + mybatis ,下面讲一下日志的配置。
一、在pom中添加log4j的依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
二、log4j的配置
1. 在资源包中添加log4j配置文件,如下图:
log4j.properties 这个配置文件和spring文件夹是同级的,有人会有疑问 那里有一个properties文件夹,为啥不把这个配置文件放进去,这里我也放了,web.xml中的路径我也改了,但不打日志。
2. log4j.properties的内容
### set log levels ###
log4j.rootLogger=INFO, stdout, log, error
log4j.Logger=search,Test
### console ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [qh_cloud][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### log file ###
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.File = ${catalina.base}/logs/qh_cloud_info.log
log4j.appender.log.Append = true
log4j.appender.log.Threshold = INFO
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = [qh_cloud][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### exception ###
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = ${catalina.base}/logs/qh_cloud_error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = [qh_cloud][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
log4j的配置基本说明:
a). 配置根Logger
log4j.rootLogger=INFO, stdout, log, error
等号后面表示日志等级;日志等级公分五级:
FATAL 0
ERROR 3 WARN 4
INFO 6
DEBUG 7
这里定义好根后,需要在根下面的输出方式中使用上,具体的可以看上面properties的配置。
b). 日志输出目的地 ,Log4j提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
c). 日志的输出格式,Log4j提供以下几种格式:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
d). 参数打印,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息:
%m 输出代码中指定的消息。 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数 。
%c 输出所属的类目,通常就是所在类的全名 。
%t 输出产生该日志事件的线程名 。
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式。
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
下面对配置中的信息进行说明:
a). Log4j中Appender有几层,如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等 。
表示输出到控制台:
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
表示输出的到文件:
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
b). 日志文件的名称以及保存的目录,(这里我将日志文件保存在tomcat的logs文件夹下,名字很特殊方便日志的查阅)
log4j.appender.log.File = ${catalina.base}/logs/qh_cloud_info.log
c). 日志的级别
log4j.appender.log.Threshold = INFO
d). 日志文件按照规定的时间进行保存,(如下是每天一个文件,在文件名后追加年月日进行区分保存)
log4j.appender.log.DatePattern='.'yyyy-MM-dd
e). 日志输出模式,这里我使用的是可以灵活地指定布局模式
log4j.appender.log.layout = org.apache.log4j.PatternLayout
定义的loyout模式:
log4j.appender.log.layout.ConversionPattern = [qh_cloud][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
f). 至于下面这个 应该是允许日志文件的追加。
log4j.appender.log.Append = true
至此,日志的配置文件就叙述完了,这些配置好 基本上可以满足日志的控制台打印和文件的保存。
三、web.xml的配置
进行 最后 一项 web.xml的配置,以上都整好后,需要在web中加载配置,配置过滤器等。
a). 加载properties配置文件:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
b). 日志过滤器的配置:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
=======================至此Log4j的pe'zi结束=========================
在日志的配置中除了Log4j ,还有另一种logback的配置,这种我也没有使用过,不过在以后会使用的。
以上是小编 在项目中使用的日志配置,是个人参考以前的项目,在网上找资料配置出来的,可能范围有点局限,若有问题 非常欢迎 指出来。