这个是自己搭建的一个纯净版的ssm框架。里面加入了日志功能,如果有需要可以给我发邮件咨询,请备注博客rambo863967089@163.com
项目结构:
一、导入依赖POM.xml
slf4j-log4j12这个包整合了slf4j和log4j,使用slf4j+log4j的组合只需要这一个依赖即可
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
二、配置web.xml,
<!--在项目/WEB-INF下的web.xml文件中加入监听配置,顺序需注意,listener必须放在后面-->
<!-- 指定监听器加载的log4j配置文件 -->
<context-param>
<param-name >webAppRootKey</param-name >
<param-value >webApp.root </param-value >
</context-param >
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
这是我的web.xml文件配置内容:这里直接给大家都粘贴过来参考一下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--配置默认访问首页-->
<welcome-file-list>
<welcome-file>/front/toIndex.do</welcome-file>
</welcome-file-list>
<!--配置处理中文乱码的过滤器类:CharacterEncodingFilter-->
<filter>
<filter-name>characterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置监听器,读取applicationContext.xml文件:ContextLoaderListener-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置springmvc的核心类:DispatcherServlet,读取springmvc.xml-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!--配置错误页面-->
<error-page>
<error-code>404</error-code>
<location>/pages/error/404.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/pages/error/404.jsp</location>
</error-page>
<!--在项目/WEB-INF下的web.xml文件中加入监听配置,顺序需注意,listener必须放在后面-->
<!-- 指定监听器加载的log4j配置文件 -->
<context-param>
<param-name >webAppRootKey</param-name >
<param-value >webApp.root </param-value >
</context-param >
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
</web-app>
三、创建文件夹:
1、在WEB-INFO下新建logs文件夹,
**在linux下如果文件夹不存在则不会自动创建,war包不会自动编译。所以在项目中创建好文件夹。
***这里的文件夹用于存放后面讲的日志以文件输出后存放的位置。
2、resources下创建并配置配置文件文件log4j.properties
按照log优先级记录日志,记录error的日志避免日志过大。其中如果logger不指定debug或者info,则配置的日志不会自动记录
#logger
log4j.rootLogger=debug,errorLogFile
log4j.additivity.org.apache=false
# errorLog appender
log4j.appender.errorLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.errorLogFile.MaxFileSize=4MB
log4j.appender.errorLogFile.Threshold=ERROR
log4j.appender.errorLogFile.ImmediateFlush=true
log4j.appender.errorLogFile.Append=true
log4j.appender.errorLogFile.File=${catalina.home}/logs/emrserch/error.log
log4j.appender.errorLogFile.encoding=UTF-8
# errorLog layout
log4j.appender.errorLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorLogFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
在每次打war包,发布项目,若按照最开始的设置方式
log4j.appender.errorLogFile.File=${webApp.root}/WEB-INF/logs/errorLog.log
会把服务器已有的log日志覆盖掉,所以采用其他路径来配置,使用${catalina.home}来设置日志存放位置,该种设置不会造成服务器可以存本地无法存,这样服务器和本地的…tomact/logs/…下面都会有日志文件
五、如果在使用接口或者其他类中需要打印日志信息可以这样使用:
import org.apache.log4j.Logger;
/**
* @ClassName: LogTest
* @Description:
* @Version: v1.0.0
* @Author: Fu Hao
* @Date: 2019/12/15 0015 上午 11:20
* Modification History:
* Date Author Version Description
* -------------------------------------------------------------
* 2019/12/15 0015 Fu ** v1.0.0 创建
*/
public class LogTest {
private final static Logger log=Logger.getLogger(LogTest.class);
public static void main(String[] args) {
log.error("logerror******************************");
log.info("hello this is log4j info log__________________------------------");
}
}