在上篇文章中,我们已经成功搭建了一套springMVC工程,现在我们继续给这个工程添加日志,用来解决以后开发测试过程中定位问题。
一、使用log4j需要配置log4j文件,有xml和properties两种文件,这里我配置log4j,路径和代码如下:
代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n" />
</layout>
</appender>
<appender name="business" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/business/business.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n" />
</layout>
</appender>
<appender name="interface" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/interface/interface.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.test">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<logger name="org.springframework.jdbc">
<level value="info" />
</logger>
<logger name="org.mybatis.spring">
<level value="info" />
</logger>
<logger name="java.sql">
<level value="info" />
</logger>
<logger name="interfaceLog" additivity="false">
<level value ="info"/>
<appender-ref ref="interface" />
<!-- 接口日志同时输出到控制台,上线时可以删除此句,自己调试时可以保留 -->
<appender-ref ref="console" />
</logger>
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
<!-- 控制台日志同时输入到业务日志文件 -->
<appender-ref ref="business" />
</root>
</log4j:configuration>
至于log4j中配置信息下面做分析
二、现在需要在pom.xml中配置log4j需要的jar包:
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- log4j -->
三、在web.xml中加载即可,并添加监听配置
<!-- log4j配置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<!-- log4j监听设置-->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
四、完成配置,然后我们在testcontroller中添加如下代码添加并测试:
//打印日志
private static final Logger logger = Logger.getLogger(TestController.class);
logger.info(" [TestController] [index_jsp][success]");
logger.error("[TestController] [index_jsp][error]",e);
然后启动tomcat,访问浏览器:我们能在控制台看到访问成功的日志:
是不是很简单?当然这只是在本地环境配置日志和查询日志,在一般开发中,我们需要在服务器上查询日志定位问题。于是我这里在机器上安装了虚拟机,并配置jdk和tomcat(这里是模拟linux服务器部署项目,暂不多做介绍)。我们通过maven方便打包之后(第一篇文章中讲解过),直接将war放到我的虚拟机上(192.168.134.132地址上)
的tomcat/webapp下,重启tomcat,访问浏览器:
访问成功:
然后我们查看tomcat中logs下的catalina.out日志,此日志为大日志,包含控制台日志:
$vim catalina.out
(这里暂不介绍linux的指令及部署jdk,tomcat等操作)
六、回头看看我们配置的log4j.xml文件
这里不仅有1-控制台日志,还添加了2-业务日志和3-接口日志,业务日志和接口日志会根据4,5的路径,生成该日志的以方便查阅。
用法如下:
1和2分别代表定义业务日志和接口日志,根据业务需求自己选择,3为使用该日志。