spring集成 log4j + slf4j
以maven web项目为例,
首先、在pom文件引入相关依赖,如下(spring官网文档有介绍):
- <dependencies>
- <!-- spring 相关 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>4.0..RELEASE</version>
- <exclusions>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>1.5.</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.5.</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.5.</version>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.</version>
- </dependency>
- </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)
- <?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="FILE" class="org.apache.log4j.RollingFileAppender">
- <param name="file" value="${project.home}/logs/dispatchmanage.log" />
- <param name="append" value="true" />
- <param name="maxFileSize" value="100MB" />
- <param name="maxBackupIndex" value="" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name='ConversionPattern' value='[%-5p][%d{yyyy/MM/dd HH:mm:ss}][%l][%m]%n' />
- </layout>
- </appender>
- <appender name="Console" class="org.apache.log4j.ConsoleAppender">
- <param name="Target" value="System.out" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name='ConversionPattern' value='[%-5p][%d{yyyy/MM/dd HH:mm:ss}][%l][%m]%n' />
- </layout>
- </appender>
- <!-- Application Loggers -->
- <logger name="com.hgs">
- <level value="debug" />
- <appender-ref ref="FILE" />
- </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>
- <!-- SQL Loggers -->
- <logger name="java.sql.Statement" additivity="true">
- <level value="debug" />
- </logger>
- <logger name="java.sql.PreparedStatement" additivity="true">
- <level value="debug" />
- </logger>
- <logger name="com.ibatis">
- <level value="info" />
- </logger>
- <logger name="com.ibatis.common.jdbc">
- <level value="info" />
- </logger>
- <logger name="com.ibatis.sqlmap.engine.impl">
- <level value="info" />
- </logger>
- <logger name="java.sql.Connection">
- <level value="info" />
- </logger>
- <!-- Root Logger -->
- <root>
- <level value="debug" />
- <appender-ref ref="Console" />
- </root>
- </log4j:configuration>
到此所有的配置工作就完成了,紧接着就可以在实际代码中编程使用了,如下:
- package com.yinz.tool.quartz.test;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobDataMap;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- *
- * @description:调度任务要执行的具体操作,
- * 该类必须要有一个无参构造器
- * @author yinz
- * 2016-7-7
- */
- public class SimpleJob implements Job {
- private Logger logger = LoggerFactory.getLogger(SimpleJob.class);
- public void execute(JobExecutionContext context) throws JobExecutionException {
- //JobDataMap dataMap = context.getJobDetail().getJobDataMap(); //JobDetail中的JobDataMap
- JobDataMap dataMap = context.getMergedJobDataMap(); //trigger和JobDetail的中的JobDataMap的合并
- String jobMsg = dataMap.getString("jobMsg");
- String triggerMsg = dataMap.getString("triggerMsg");
- logger.info(new Date() + " : < " + jobMsg + " >, < " + triggerMsg + " >" );
- }
- }
代码中可以看出,我们是面向slf4j 的api编程,这样就可以方便实现在不同的日志框架间切换而不需修改代码。
spring集成 log4j + slf4j的更多相关文章
- Spring集成log4j日志管理
原文地址:http://blog.csdn.net/naruto1021/article/details/7969535 在使用Spring框架的时候,我们可以很方便的配置log4j来进行日志管理. ...
- Spring结合log4j(slf4j)
maven依赖 <!-- slf4j (级联:log4j/slf4j-api) --> <dependency> <groupId> ...
- spring 集成 log4j 配置
在web.xml中增加如下代码: <context-param> <param-name>log4jConfigLocation</param-name> < ...
- spring学习总结(mybatis,事务,测试JUnit4,日志log4j&slf4j,定时任务quartz&spring-task,jetty,Restful-jersey等)
在实战中学习,模仿博客园的部分功能.包括用户的注册,登陆:发表新随笔,阅读随笔:发表评论,以及定时任务等.Entity层设计3张表,分别为user表(用户),essay表(随笔)以及comment表( ...
- Spring MVC集成Log4j
以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...
- Spring Boot 整合 slf4j+log4j 实现日志管理
一:首先新建一个jar项目,如下图: 二:添加log4j的依赖,如下pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0 ...
- elasticsearch spring 集成
elasticsearch spring 集成 项目清单 elasticsearch服务下载包括其中插件和分词 http://download.csdn.net/detail/u0142011 ...
- 消息中间件系列四:RabbitMQ与Spring集成
一.RabbitMQ与Spring集成 准备工作: 分别新建名为RabbitMQSpringProducer和RabbitMQSpringConsumer的maven web工程 在pom.xml文 ...
- Spring 集成rabbiatmq
pom 文件 <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artif ...
随机推荐
- 【BZOJ2434-[Noi2011]】阿狸的打字机(AC自动机(fail树)+离线+树状数组)
Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...
- 14.5.4 Phantom Rows 幻影行
14.5.4 Phantom Rows 幻影行 所谓的幻读问题发生在一个事务 当相同的查询产生不同的结果集在不同的时间. 例如,如果一个SELECT 是执行2次,但是第2次返回的时间不第一次返回不同, ...
- 【HDOJ】1688 Sightseeing
Dijkstra求解次短路径,使用cnt和dis数组记录最小.次小的个数和长度.重写更新操作. /* 1688 */ #include <iostream> #include <st ...
- Android客户端调用Asp.net的WebService
Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...
- 【转】 log4cpp 的使用
[转自] http://sogo6.iteye.com/blog/1154315 Log4cpp配置文件格式说明 log4cpp有3个主要的组件:categories(类别).append ...
- JavaScript高级程序设计2.pdf
第三章 基本概念 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写 标识符 指变量.函数.属性的名字或者函数的参数 第一个字符必须是一个字母.下划线或美元符号,其它字符可以 ...
- MySQL高可用性大杀器之MHA | 火丁笔记
MySQL高可用性大杀器之MHA | 火丁笔记 MySQL高可用性大杀器之MHA
- java 哈希码
加入新的元素到数组中 /** * Append the given object to the given array, returning a new array * consisting of t ...
- winform 获取文件夹的名称 分类: WinForm 2014-08-04 15:50 242人阅读 评论(0) 收藏
目的:获取项目路径下所有文件夹的名称,并绑定到Combobox控件下: 显示要求:此文件夹名称和他的子文件名称的集合: Combobox控件名称:cmbFile 图示: 代码实现: //项目路径 st ...
- CSS3动画变形transition
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...