`

sping mvc 配置log4j

 
阅读更多

第一步:web.xml配置

 

[html] view plain copy
 
  1. <!-- log4j配置,文件路径,因为是跟随项目启动 -->  
  2. <context-param>  
  3.     <param-name>log4jConfigLocation</param-name>  
  4.     <param-value>/WEB-INF/log4j.xml</param-value>  
  5. </context-param>  
  6. <!-- 配置log4j.xml变量,如果需要动态的就使用下面方式,使用方法${name} -->  
  7. <context-param>  
  8.     <param-name>controller</param-name>  
  9.     <param-value>controller-log</param-value>  
  10. </context-param>  
  11.   
  12. <context-param>  
  13.     <param-name>loggingLevel</param-name>  
  14.     <param-value>info</param-value>  
  15. </context-param>  
  16. <!-- 加载log4j配置文件 -->  
  17. <listener>  
  18.     <listener-class>org.springframework.web.util.Log4jConfigListener  
  19.     </listener-class>  
  20. </listener>  

 

 

 

第二步log4j.xml配置

(配置文件可以有两种方式,一种是xml,一种是properties。个人比较喜欢xml,一目了然)

先讲解一下核心对象:

logger对象: Logger对象负责捕获日志信息及它们存储在一个空间的层次结构。

Appender对象:下位层提供Appender对象。Appender对象负责发布日志信息,以不同的首选目的地,如数据库,文件,控制台,UNIX系统日志等。

layout对象: 该层提供其用于格式化不同风格的日志信息的对象。布局层提供支持Appender对象到发布日志信息之前。

打个比方:logger是个情报站,负责收集他 所在地方(用name="xxx包"指定)下的所有信息。appender是发送出去的方式,如写信(FileAppender)、电报(SMTPAppender)等多种。layout就是发送内容以什么格式书写,如自定义格式(PatternLayout),html(HTMLLayout)格式。

 

 

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>      
  2. <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">    
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  4. <!-- 可以配置多个appender来对应不同的输出,如文件输出,sql输出,控制台输出,邮件输出等 -->    
  5.   <!-- [控制台STDOUT] 不同的输出类型对应着不同的calss,如控制台输出class对应着 org.apache.log4j.ConsoleAppender -->    
  6.   <appender name="console" class="org.apache.log4j.ConsoleAppender">  <!-- name提供给logger或者root调用 -->  
  7.      <param name="encoding" value="GBK" />  <!-- 保存字符集 -->  
  8.      <param name="target" value="System.out" />  <!-- 输出到控制台 -->  
  9.      <layout class="org.apache.log4j.PatternLayout"> <!-- loyout表示输出方式,可以多种,class值区分,PatternLayout表示自定义格式 -->   
  10.        <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />  <!-- 输出格式,后面解释 -->  
  11.      </layout>    
  12.       <!--filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF  
  13.           所有下面输出的是debug到warn不会有error和fatal  
  14.       -->    
  15.         <filter class="org.apache.log4j.varia.LevelRangeFilter">    
  16.             <param name="levelMin" value="debug" />    
  17.             <param name="levelMax" value="warn" />    
  18.             <param name="AcceptOnMatch" value="true" />  <!-- 答案:http://bbs.csdn.net/topics/350195913 -->  
  19.         </filter>    
  20.   </appender>    
  21.     
  22.   <!-- [公共Appender] 这个class表示输入到文件,并且按日期生成新文件-->    
  23.   <appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">    
  24.      <param name="File" value="${webapp.root}/logs/common-default.log" />  <!-- ${webapp.root}项目根路径,自动获得,不用配置,可自己在web.xml中配置 -->  
  25.      <param name="Append" value="true" />  <!-- 是否项目重启继续保存之前日志 -->  
  26.      <param name="encoding" value="GBK" />    
  27.      <param name="threshold" value="all" /> <!-- 记录所有类型日志,记录它和比它等级高的日志all<debug -->  
  28.      <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  <!-- 日期格式  例子:common-default.log.2015-09-17.log-->  
  29.      <layout class="org.apache.log4j.PatternLayout">  <!-- 输出方式 -->  
  30.     <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />    
  31.      </layout>    
  32.    </appender>    
  33.     
  34.    <!-- [debug日志APPENDER] -->    
  35.    <appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">    
  36.      <param name="File" value="${webapp.root}/logs/controller/debug-log.log" />    
  37.      <param name="Append" value="true" />    
  38.      <param name="encoding" value="GBK" />    
  39.      <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />    
  40.      <layout class="org.apache.log4j.PatternLayout">    
  41.         <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />    
  42.      </layout>    
  43.    </appender>    
  44.      
  45.    <!-- [info日志APPENDER] -->    
  46.    <appender name="INFO-APPENDER"    
  47. class="org.apache.log4j.DailyRollingFileAppender">    
  48.      <param name="File" value="${webapp.root}/logs/controller/info-log.log" />    
  49.      <param name="Append" value="false" />    
  50.      <param name="encoding" value="GBK" />  
  51.      <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />    
  52.      <layout class="org.apache.log4j.PatternLayout">    
  53.     <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />    
  54.      </layout>   
  55.      <!-- 我只想记录info日志,就做如下设置 -->  
  56.      <filter class="org.apache.log4j.varia.LevelRangeFilter">       
  57.        <param name="LevelMax" value="info"/>       
  58.        <param name="LevelMin" value="info"/>       
  59.       </filter>     
  60.    </appender>    
  61.   
  62.     <!-- [组件日志APPENDER] -->    
  63.    <appender name="COMPONENT-APPENDER"    
  64. class="org.apache.log4j.DailyRollingFileAppender">    
  65.      <param name="File" value="${webapp.root}/logs/logistics-component.log" />    
  66.      <param name="Append" value="true" />    
  67.      <param name="encoding" value="GBK" />    
  68.      <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />    
  69.      <layout class="org.apache.log4j.PatternLayout">    
  70.     <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />    
  71.      </layout>    
  72.    </appender>    
  73.     
  74.      <!-- debug log -->    
  75.      <!-- name指定的是包名,表示这个logger只记录com.wzw.controller下的所有日志 -->  
  76.    <logger name="com.wzw.controller" additivity="true">  <!-- additivity 是否继承root -->  
  77.       <!-- <level value="${loggingLevel}" />   -->  
  78.       <level value="DEBUG"></level>  <!-- 现在级别 -->  
  79.       <appender-ref ref="DEBUG-APPENDER" />    
  80.    </logger>    
  81.      
  82.      <!-- info log -->    
  83.      <!-- name指定的是包名,这样只操作此包下的log -->  
  84.    <logger name="com.wzw.controller" additivity="true">    
  85.       <level value="INFO"></level>    
  86.       <appender-ref ref="INFO-APPENDER" />    
  87.       <appender-ref ref="console"/>  
  88.    </logger>    
  89.      
  90.    <!-- Root Logger -->    
  91.    <!-- 所有logger的父类,记录所有的日志。 -->  
  92.    <root>   
  93.        <level value="ALL"></level>  <!-- 限定记录等级 -->  
  94.        <appender-ref ref="DEFAULT-APPENDER" />  <!-- 调用记录方式 -->  
  95.        <appender-ref ref="console"/>  
  96.    </root>    
  97.      
  98. </log4j:configuration>  


运行就能看到common-default.log里面有操作日志

 

自己输出日志:

我controller包下某各类中:

 

[html] view plain copy
 
  1. package com.wzw.controller;  
  2. import org.apache.logging.log4j.LogManager;  
  3. import org.apache.logging.log4j.Logger;  
  4. import org.springframework.stereotype.Controller;  
  5. import org.springframework.web.bind.annotation.ExceptionHandler;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. @Controller  
  8. @RequestMapping("/account")  
  9. public class AccountController {  
  10.     private static Logger logger =LoggerFactory.getLogger(AccountController.class);  
  11. @ResponseBody  
  12.     @RequestMapping("/login")  
  13.     public String login(HttpSession session){  
  14.         logger.info("请求登录");  
  15.         logger.debug("debug");  
  16.         logger.warn("warn");  
  17. }  
  18. }  

 

 

访问这个controller,就会记录日志,因为有log4j中有两个logger配置记录controller包下的日志,所以输出到两个logger下<appender-ref>(输出方式)。

appender选项:

  • AppenderSkeleton

  • AsyncAppender

  • ConsoleAppender

  • DailyRollingFileAppender

  • ExternallyRolledFileAppender

  • FileAppender

  • JDBCAppender

  • JMSAppender

  • LF5Appender

  • NTEventLogAppender

  • NullAppender

  • RollingFileAppender

  • SMTPAppender

  • SocketAppender

  • SocketHubAppender

  • SyslogAppender

  • TelnetAppender

  • WriterAppender

 layout选项:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

 

模式转换字符:

下表说明了以上模式使用的字符和所有其他字符,可以在自定义模式中使用:

转换字符 表示的意思
c 用于输出的记录事件的类别。例如,对于类别名称"a.b.c" 模式  %c{2} 会输出 "b.c"
C 用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名 "org.apache.xyz.SomeClass", 模式 %C{1} 会输出 "SomeClass".
d 用于输出的记录事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
F 用于输出被发出日志记录请求,其中的文件名
l 用于将产生的日志事件调用者输出位置信息
L 用于输出从被发出日志记录请求的行号
m 用于输出使用日志事件相关联的应用程序提供的消息
M 用于输出发出日志请求所在的方法名称
n 输出平台相关的行分隔符或文字
p 用于输出的记录事件的优先级
r 用于输出毫秒从布局的结构经过直到创建日志记录事件的数目
t 用于输出生成的日志记录事件的线程的名称
x 用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文)
X 在X转换字符后面是键为的MDC。例如  X{clientIP} 将打印存储在MDC对键clientIP的信息
% 文字百分号 %%将打印%标志

格式修饰符:

默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。

下表涵盖了各种各样的修饰符的情况:

 

Format modifier left justify minimum width maximum width 注释
%20c false 20 none 用空格左垫,如果类别名称少于20个字符长
%-20c true 20 none 用空格右垫,如果类别名称少于20个字符长
%.30c NA none 30 从开始截断,如果类别名称超过30个字符长
%20.30c false 20 30 用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。
%-20.30c true 20 30 用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。

标签

 

分享到:
评论

相关推荐

    Spring MVC 框架 整合log4j

    3. **在Spring MVC中使用Log4j**:在Spring MVC的Controller或其他需要记录日志的类中,引入`org.apache.log4j.Logger`,并创建一个实例。例如: ```java import org.apache.log4j.Logger; public class ...

    spring mvc log4j

    **Spring MVC 集成 Log4j 知识点详解** Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它提供了模型-视图-控制器(MVC)架构模式来构建可维护、可扩展的Web应用。Log4j 是一个广泛使用的日志记录框架,它提供...

    spring-mvc-log4j

    这个项目的目的是展示如何在Spring MVC应用中配置和使用Log4j来记录应用程序的日志信息。 在Spring MVC中,日志系统对于调试、性能监控以及问题排查至关重要。Log4j提供了灵活的日志级别(如DEBUG、INFO、WARN、...

    springmvc log4j 配置 demo

    在这个"springmvc log4j配置 demo"中,我们将探讨如何将Log4j集成到Spring MVC应用中,以便进行高效且有组织的日志管理。 首先,Log4j是Apache的一个开源项目,提供了一套灵活的日志记录系统。它的优点在于可配置性...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    springmvc5+hibernate5+junit4+log4j2整合实例

    在本整合实例中,我们将探讨如何将Spring MVC 5、Hibernate 5、JUnit 4 和 Log4j2 集成在一起,以构建一个高效、可测试和日志记录完善的Java Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    这里提到的四个关键配置文件——`spring-mvc.xml`、`spring-mybatis.xml`、`web.xml`以及`log4j.properties`,对于一个基于Java的Web应用来说至关重要,特别是使用Spring MVC和MyBatis框架的时候。接下来,我们将...

    spring框架和log4j日志用到的jar包

    在Spring框架中,可以通过Spring的Log4j配置来统一管理日志,方便调试和问题排查。 在提供的文件名称列表中,虽然没有具体的jar包名称,但通常Spring框架所需的jar包包括:spring-core、spring-context、spring-...

    SSM整合配置文件、spring-mvc.xml、spring-mybatis.xml、spring.xml、config.properties、log4j.p

    config.properties:数据库配置文件 log4j.properties:mybatis日志文件 spring-mvc.xml:spring-MVC配置文件 spring-mybatis.xml:mybatis的配置文件 spring.xml

    spring mvc jar包

    10. `com.springsource.org.apache.commons.logging-1.1.1.jar`:Apache Commons Logging 库,是一个日志抽象层,允许开发者选择不同的日志实现,如 Log4j 或 JDK 内建的日志。 以上这些库构成了 Spring MVC 开发的...

    spring mvc+hibernate+spring完整配置步骤

    在配置Spring MVC时,我们需要引入相应的库,包括Spring、Spring MVC、Hibernate、数据库驱动、日志库(如log4j)、数据源(如c3p0)等。然后,我们需要在web.xml中配置DispatcherServlet,定义HandlerMapping和...

    spring mvc +mysql+log4j+aop

    综上,这个项目涵盖了Spring MVC作为web应用的核心框架,利用MySQL存储和处理数据,Log4j实现日志记录,AOP增强Controller的功能,DRUID作为高效的数据库连接池,以及对旧版浏览器的兼容性处理。对于初学者来说,这...

    spring mvc定时任务需要的所有jar包,包括slf4j、log4j

    总的来说,Spring MVC的定时任务实现需要整合多个组件,其中`slf4j`和`log4j`负责日志记录,而Spring Task提供任务调度能力。理解并正确配置这些组件,能够帮助开发者构建出高效且可维护的定时任务系统。在实际项目...

    spring+spring mvc+mybatis案例整合.docx

    本案例还演示了如何使用 Lombok 依赖项来简化 JavaBean 的开发,并使用 Log4j 依赖项来记录应用程序的日志信息。通过本案例,我们可以学习如何使用 Spring、Spring MVC 和 MyBatis 框架来开发一个基于 Java 的 Web ...

    spring mvc项目

    spring mvc maven项目,导入IDEA后无报错,需要在IDEA中...该项目使用servlet3.0规范,无web.xml,无spring.xml等配置文件,所有的配置均通过Java Config、注解搞定,项目中还集成了log4j2技术,以及前端html文件等。

    spring+springMVC+mybatis+log4j框架整合

    通过配置log4j.properties或log4j.xml文件,可以定制日志输出的位置、格式和级别,实现日志管理和分析。 在实际项目中,"spring+springMVC+mybatis+log4j框架整合"通常涉及以下步骤: 1. 引入相关jar包:添加Spring...

    Spring_MVC_LOG4J

    在Spring_MVC_LOG4J项目中,可能包含了如何在Spring MVC应用中集成LOG4J的示例代码,通过这些示例,你可以学习到如何在Spring MVC应用中配置和使用LOG4J,以优化日志管理和调试过程。 这个项目的源码(Spring_MVC_...

    spring mvc_08

    在Spring MVC和MyBatis的整合应用中,我们通常会在配置文件中设置Log4j的日志级别、输出目的地(如控制台、文件或网络)以及自定义的布局模式。 集成Log4j,我们需要创建一个log4j.properties或log4j.xml配置文件,...

    Spring Mvc AOP通过注解方式拦截controller等实现日志管理

    Spring MVC AOP日志管理通常与日志框架(如Log4j、Logback或Java内置的java.util.logging)集成。以下以Log4j为例: 1. 引入依赖:在项目pom.xml中添加Log4j的依赖。 2. 配置Log4j:创建log4j.properties或log4j....

    SpringMVC基本框架(maven)

    2.标准配置文件格式:数据库配置、资源配置、log4j配置、spring配置; 3.jar包通过maven管理; 4.增加常用过滤器配置,可根据项目要求改写; 5.增加获取资源方法实例,可以获取配置文件中的常量。

Global site tag (gtag.js) - Google Analytics