以maven web项目为例,

首先、在pom文件引入相关依赖,如下(spring官网文档有介绍):

  1. <dependencies>
  2. <!-- spring 相关 -->
  3. <dependency>
  4. <groupId>org.springframework</groupId>
  5. <artifactId>spring-webmvc</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework</groupId>
  9. <artifactId>spring-core</artifactId>
  10. <version>4.0..RELEASE</version>
  11. <exclusions>
  12. <exclusion>
  13. <groupId>commons-logging</groupId>
  14. <artifactId>commons-logging</artifactId>
  15. </exclusion>
  16. </exclusions>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.slf4j</groupId>
  20. <artifactId>jcl-over-slf4j</artifactId>
  21. <version>1.5.</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.slf4j</groupId>
  25. <artifactId>slf4j-api</artifactId>
  26. <version>1.5.</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.slf4j</groupId>
  30. <artifactId>slf4j-log4j12</artifactId>
  31. <version>1.5.</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>log4j</groupId>
  35. <artifactId>log4j</artifactId>
  36. <version>1.2.</version>
  37. </dependency>
  38. </dependencies>

spring 内部默认使用的日志框架是: commons-logging(需排除该依赖), 引入“jcl-over-slf4j”依赖,使spring对common-logging的调用转为对slf4j的调用

需要注意的是: 排除commons-logging依赖后,若不配置其他替代依赖(jcl-over-slf4j),容器初始化时会报错:java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

接着编写log4j配置文件log4j.xml,位于classpath路径下(src/main/resources)

  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.  
  5. <!-- Appenders -->
  6. <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
  7. <param name="file" value="${project.home}/logs/dispatchmanage.log" />
  8. <param name="append" value="true" />
  9. <param name="maxFileSize" value="100MB" />
  10. <param name="maxBackupIndex" value="" />
  11. <layout class="org.apache.log4j.PatternLayout">
  12. <param name='ConversionPattern' value='[%-5p][%d{yyyy/MM/dd HH:mm:ss}][%l][%m]%n' />
  13. </layout>
  14. </appender>
  15.  
  16. <appender name="Console" class="org.apache.log4j.ConsoleAppender">
  17. <param name="Target" value="System.out" />
  18. <layout class="org.apache.log4j.PatternLayout">
  19. <param name='ConversionPattern' value='[%-5p][%d{yyyy/MM/dd HH:mm:ss}][%l][%m]%n' />
  20. </layout>
  21. </appender>
  22.  
  23. <!-- Application Loggers -->
  24. <logger name="com.hgs">
  25. <level value="debug" />
  26. <appender-ref ref="FILE" />
  27. </logger>
  28.  
  29. <!-- 3rdparty Loggers -->
  30. <logger name="org.springframework.core">
  31. <level value="info" />
  32. </logger>
  33.  
  34. <logger name="org.springframework.beans">
  35. <level value="info" />
  36. </logger>
  37.  
  38. <logger name="org.springframework.context">
  39. <level value="info" />
  40. </logger>
  41.  
  42. <logger name="org.springframework.web">
  43. <level value="info" />
  44. </logger>
  45.  
  46. <!-- SQL Loggers -->
  47. <logger name="java.sql.Statement" additivity="true">
  48. <level value="debug" />
  49. </logger>
  50. <logger name="java.sql.PreparedStatement" additivity="true">
  51. <level value="debug" />
  52. </logger>
  53.  
  54. <logger name="com.ibatis">
  55. <level value="info" />
  56. </logger>
  57. <logger name="com.ibatis.common.jdbc">
  58. <level value="info" />
  59. </logger>
  60. <logger name="com.ibatis.sqlmap.engine.impl">
  61. <level value="info" />
  62. </logger>
  63. <logger name="java.sql.Connection">
  64. <level value="info" />
  65. </logger>
  66. <!-- Root Logger -->
  67. <root>
  68. <level value="debug" />
  69. <appender-ref ref="Console" />
  70. </root>
  71.  
  72. </log4j:configuration>

到此所有的配置工作就完成了,紧接着就可以在实际代码中编程使用了,如下:

  1. package com.yinz.tool.quartz.test;
  2.  
  3. import java.util.Date;
  4.  
  5. import org.quartz.Job;
  6. import org.quartz.JobDataMap;
  7. import org.quartz.JobExecutionContext;
  8. import org.quartz.JobExecutionException;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. /**
  12. *
  13. * @description:调度任务要执行的具体操作,
  14. * 该类必须要有一个无参构造器
  15. * @author yinz
  16. * 2016-7-7
  17. */
  18. public class SimpleJob implements Job {
  19.  
  20. private Logger logger = LoggerFactory.getLogger(SimpleJob.class);
  21.  
  22. public void execute(JobExecutionContext context) throws JobExecutionException {
  23. //JobDataMap dataMap = context.getJobDetail().getJobDataMap(); //JobDetail中的JobDataMap
  24. JobDataMap dataMap = context.getMergedJobDataMap(); //trigger和JobDetail的中的JobDataMap的合并
  25. String jobMsg = dataMap.getString("jobMsg");
  26. String triggerMsg = dataMap.getString("triggerMsg");
  27. logger.info(new Date() + " : < " + jobMsg + " >, < " + triggerMsg + " >" );
  28. }
  29.  
  30. }

代码中可以看出,我们是面向slf4j 的api编程,这样就可以方便实现在不同的日志框架间切换而不需修改代码。

spring集成 log4j + slf4j的更多相关文章

  1. Spring集成log4j日志管理

    原文地址:http://blog.csdn.net/naruto1021/article/details/7969535 在使用Spring框架的时候,我们可以很方便的配置log4j来进行日志管理. ...

  2. Spring结合log4j(slf4j)

    maven依赖         <!-- slf4j (级联:log4j/slf4j-api) --> <dependency>         <groupId> ...

  3. spring 集成 log4j 配置

    在web.xml中增加如下代码: <context-param> <param-name>log4jConfigLocation</param-name> < ...

  4. spring学习总结(mybatis,事务,测试JUnit4,日志log4j&slf4j,定时任务quartz&spring-task,jetty,Restful-jersey等)

    在实战中学习,模仿博客园的部分功能.包括用户的注册,登陆:发表新随笔,阅读随笔:发表评论,以及定时任务等.Entity层设计3张表,分别为user表(用户),essay表(随笔)以及comment表( ...

  5. Spring MVC集成Log4j

    以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...

  6. Spring Boot 整合 slf4j+log4j 实现日志管理

    一:首先新建一个jar项目,如下图: 二:添加log4j的依赖,如下pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0 ...

  7. elasticsearch spring 集成

    elasticsearch spring 集成 项目清单   elasticsearch服务下载包括其中插件和分词   http://download.csdn.net/detail/u0142011 ...

  8. 消息中间件系列四:RabbitMQ与Spring集成

    一.RabbitMQ与Spring集成  准备工作: 分别新建名为RabbitMQSpringProducer和RabbitMQSpringConsumer的maven web工程 在pom.xml文 ...

  9. Spring 集成rabbiatmq

    pom 文件 <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artif ...

随机推荐

  1. 【BZOJ2434-[Noi2011]】阿狸的打字机(AC自动机(fail树)+离线+树状数组)

    Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...

  2. 14.5.4 Phantom Rows 幻影行

    14.5.4 Phantom Rows 幻影行 所谓的幻读问题发生在一个事务 当相同的查询产生不同的结果集在不同的时间. 例如,如果一个SELECT 是执行2次,但是第2次返回的时间不第一次返回不同, ...

  3. 【HDOJ】1688 Sightseeing

    Dijkstra求解次短路径,使用cnt和dis数组记录最小.次小的个数和长度.重写更新操作. /* 1688 */ #include <iostream> #include <st ...

  4. Android客户端调用Asp.net的WebService

    Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...

  5. 【转】 log4cpp 的使用

    [转自] http://sogo6.iteye.com/blog/1154315     Log4cpp配置文件格式说明   log4cpp有3个主要的组件:categories(类别).append ...

  6. JavaScript高级程序设计2.pdf

    第三章 基本概念 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写 标识符 指变量.函数.属性的名字或者函数的参数 第一个字符必须是一个字母.下划线或美元符号,其它字符可以 ...

  7. MySQL高可用性大杀器之MHA | 火丁笔记

    MySQL高可用性大杀器之MHA | 火丁笔记 MySQL高可用性大杀器之MHA

  8. java 哈希码

    加入新的元素到数组中 /** * Append the given object to the given array, returning a new array * consisting of t ...

  9. winform 获取文件夹的名称 分类: WinForm 2014-08-04 15:50 242人阅读 评论(0) 收藏

    目的:获取项目路径下所有文件夹的名称,并绑定到Combobox控件下: 显示要求:此文件夹名称和他的子文件名称的集合: Combobox控件名称:cmbFile 图示: 代码实现: //项目路径 st ...

  10. CSS3动画变形transition

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...