Spring 4.2.4.RELEASE MVC 学习笔记 - 5 - Log4j
spring mvc 学习到这里,才注意到一个问题,控制台没有任何对应的日志。哈哈,好吧接下来,我们把log4j的日志整合进去,这个也比较简单。
项目引入Log4j依赖jar包
打开framework_spring工程下面的pom.xml文件,在里面填写log4j引入配置。
<!-- 导入log4j的jar包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
创建Log4j配置文件
创建log4j.properties文件,放到默认目录即可,目录结构如下图。
log4j.properties文件的配置代码如下。引入之后,重新编译项目,运行后控制台就会有相应的很多很多的日志打印出来了。
log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Encoding=UTF-8
log4j.appender.stdout.layout.ConversionPattern=@%-5p|%d|%l|%t %n Info:%m %n%n
控制Spring框架的日志输入级别
上面操作后,我们发现控制台日志输入的好多debug级别的,但实际上对我们来说很多日志对开发的需求并不是很大,所以需要将Spring框架输入的日志等级控制一下。所以,就有了下面的代码。
1.创建log4j.xml文件代替log4j.properties,因为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级别的日志 -->
<root>
<priority value="DEBUG" />
<appender-ref ref="stdout" />
</root>
<!-- 指定以org.springframework包开头的类中打印info级别的日志,这里控制spring框架只输入info级别的,并且appender继承staout appender。 -->
<category name="org.springframework">
<priority value="INFO" />
<appender-ref ref="stdout" />
</category>
<!-- 配置一个控制台appender stdout,将日志信息输入到控制台中。 -->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="@%-5p|%d|%l|%t %n Info:%m %n%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- <param name="LevelMax" value="ERROR" /> -->
<param name="LevelMin" value="DEBUG" />
</filter>
</appender>
</log4j:configuration>
Log4j其他一些常用配置(来自互联网)
顺便把一些Log4j常用的一些配置也给出来吧,方便大家,不过这些配置我可不保证都能正确使用哦,都是来自网上收集来的。
log4j.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 输出日志到控制台 ConsoleAppender -->
<appender name="console"
class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="info"></param>
<layout class="org.apache.log4j.TTCCLayout">
<param name="ConversionPattern" value="TTCCLayout"></param>
</layout>
</appender>
<!-- 输出日志到文件 每天一个文件 -->
<appender name="dailyRollingFile"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="info"></param>
<param name="ImmediateFlush" value="true"></param>
<param name="File" value="c:/logs/dailyRollingFile.log"></param>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
</layout>
</appender>
<!-- 输出日志到文件 文件大小到达指定尺寸的时候产生一个新的文件 -->
<appender name="railyFile"
class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/logs/railyFile.log"></param>
<param name="ImmediateFlush" value="true"/>
<param name="Threshold" value="info"></param>
<param name="Append" value="true"></param>
<param name="MaxFileSize" value="30KB"></param>
<param name="MaxBackupIndex" value="100"></param>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
</layout>
</appender>
<!-- 输出日志到文件 -->
<appender name="file"
class="org.apache.log4j.FileAppender">
<param name="File" value="c:/logs/file.log"></param>
<param name="Threshold" value="info"></param>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
</layout>
</appender>
<!--
定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。
如果在railyFile中定义<param name="Threshold" value="info"></param>,那么将会把info以上级别的信息输出
-->
<root>
<priority value="debug" />
<appender-ref ref="console" />
<appender-ref ref="dailyRollingFile" />
<appender-ref ref="railyFile" />
<appender-ref ref="file" />
</root>
</log4j:configuration>