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.2.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.8</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.5.8</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.5.8</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</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="10" /><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中的JobDataMapJobDataMap dataMap = context.getMergedJobDataMap();  //trigger和JobDetail的中的JobDataMap的合并String jobMsg = dataMap.getString("jobMsg");String triggerMsg = dataMap.getString("triggerMsg");logger.info(new Date() + " :  < " + jobMsg + " >, < " + triggerMsg + " >" );}}
复制代码

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

转载于:https://www.cnblogs.com/yuluoxingkong/p/8004308.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜讯,Asp.net Ajax 文档提供下载

今天去了一下 Asp.net Ajax 的官方网站&#xff0c;准备挑战自己的耐心去映着头皮跨过那所谓的修好的电缆去读 Asp.net Ajax 的文档。发现一个喜讯&#xff0c;不知道到什么时候&#xff0c;Asp.net Ajax 的文档提供下载了。我下载了一个&#xff0c;包括文档,代码和示例数据库…

大数阶乘

描述我们都知道如何计算一个数的阶乘&#xff0c;可是&#xff0c;如果这个数很大呢&#xff0c;我们该如何去计算它并输出它&#xff1f; 输入输入一个整数m(0<m<5000)输出输出m的阶乘&#xff0c;并在输出结束之后输入一个换行符样例输入50 样例输出304140932017133780…

90后中国程序员“黑吃黑”博彩网站,半年获利256万,判刑11年半

一个90后程序员&#xff0c;在短短两年的时间里&#xff0c;非法控制67万台计算机&#xff0c;还利用漏洞“黑吃黑”博彩网站&#xff0c;半年从中获利256万余元……近期&#xff0c;浙江省杭州市西湖区人民法院对这起黑客大案进行了一审宣判。法院以诈骗罪、非法控制计算机信息…

成功数据恢复一例LINUX EXT3 下误删除ORACLE数据库

[申明]转载请保留原作网站&#xff1a;[url]http://www.sjhf.net[/url] 关键字[LINUX误删除数据恢复][摘要]国家认证认可监督管理委员会&#xff0c;用于正常工作的一个重要ORACLE数据库&#xff0c;存储于LINUX EXT3文件系统之上。一次&#xff0c;管理员在建立测试库时选错了…

nyoj744 蚂蚁的难题(-)

蚂蚁的难题(一) 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述小蚂蚁童鞋最近迷上了位运算&#xff0c;他感觉位运算非常神奇。不过他最近遇到了一个难题&#xff1a; 给定一个区间[a,b],在区间里寻找两个数x和y&#xff0c;使得x异或y最…

用一张图片告诉你芯片设计

#推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言嵌入式Linux微信扫描二维码&#xff0c;关注我的公众号

XML轻松学习手册(1)XML快速入门

前言转载于:https://blog.51cto.com/yinpeng/17218

【学习总结】Markdown 使用的正确姿势

参考资料&#xff1a; Learning-Markdown 入门参考 注&#xff1a;原博可能对GitHub中的Markdown格式更适用。ps&#xff1a;在王熊猫的GitHub里也有相关格式的攻略&#xff0c;可一并参考学习。关于表情的cheatsheet ? &#xff08;似乎不太好&#xff0c;哈哈&#xff09;1、…

MTK 平台TP调试遇坑

#前言最近在调试我们项目上的TP驱动&#xff0c;奈何一直不能使用&#xff0c;而且这个项目的硬件确定是没有问题的「这个是前提」&#xff0c;我们在软件上提升了SDK基线&#xff0c;在之前的基线版本上软件是没有问题的。然后我就赶紧检查了两个方面确定TP的供电是不是正常的…

阿里巴巴装袋问题

【任务描述】 阿里巴巴进入四十大盗的宝库后&#xff0c;发现里面宝物众多&#xff0c;并且每种宝物都有体积和价值的标注&#xff0c;如何尽可能地多装宝物&#xff0c;是宝物的价值最大&#xff0c;但不能超过口袋容量。&#xff08;口袋体积是150&#xff09; 宝物 A B …

立言,必为之

淄博一行&#xff0c;女朋友一句话点醒梦中人。感悟颇多&#xff0c;今立言与此&#xff0c;后必践行之。 一诺千金 言必行&#xff0c;行必果。答应别人的事情就要做&#xff0c;要做就要做好。 慎言要做到一诺千金&#xff0c;必须要慎言&#xff0c;合理的估计自己的实力&am…

51nod 1379 索函数

Fib[0]0,Fib[1]1,Fib[n]Fib[n-1]Fib[n-2] if n>1. 定义索函数Sor(n)Fib[0]| Fib[1] |Fib[2]|…|Fib[n]. 给定整数n&#xff0c;要求计算Sor(n)%1,000,000,007(1e97). Input第1行&#xff1a;给出一个整数T&#xff0c;表示有T组数据。(1<T<10000) 第2行到T1行&#xf…

昨天小米股价大涨的背后:UWB芯片到底是个什么鬼?

小米10月12日发布了“一指连”小米UWB技术。小米称该技术赋予手机与智能设备空间感知能力&#xff0c;手机指向设备即可定向操控&#xff0c;使小米在“通往未来之路上再迈一步”。来源&#xff1a;腾讯自选股受此消息利好&#xff0c;截止10月12日收盘&#xff0c;小米集团港股…

取表单radio值时

取表单radio值时 在 js 中取值时&#xff0c;用 e.detail.value.xxx 或 e.detail.value["xxx"]&#xff0c;其中 xxx 为 name 属性值。posted on 2017-12-09 23:45 飞狐爷 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/cyxxzjp/p/8013181.html

数钱问题

数钱 题目描述 按照中国的币制有 1元&#xff0c;5元&#xff0c;10元&#xff0c;20元&#xff0c;50元&#xff0c;100元 给出钱数n&#xff08;n能用int存储&#xff09;&#xff0c;输入最少多少张钱能补足n。 输入 k n 输出 钱的张数 样例输入 4 123 200 187…

当你使用微信和QQ的时候,请不要忘记ICQ这个伟大的公司!

距离 ICQ 创立已经 24 年了&#xff0c;仿佛已经跨越了一代人的年纪&#xff0c;而今&#xff0c;我们似乎无法在互联网上找到太多关于 ICQ 的信息。如果有人不知道 ICQ 的话&#xff0c;可以告诉你 ICQ 才是互联网通讯的鼻祖&#xff0c;而不是 QQ、MSN、微信、Facebook。ICQ …

新学年开始了

今天是正月十五&#xff0c;本是万家团圆的日子&#xff0c;而我却来到了济南&#xff0c;我的学校。独在异乡为异客&#xff0c;每逢佳节倍思亲。本应是艳阳高照的天气&#xff0c;却冷不丁的来了个倒春 寒&#xff0c;济南居然下起了大雪。找出一个寒假都没有穿的羽绒服&…

nyoj 71 独木舟上的旅行 贪心

独木舟上的旅行 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述进行一次独木舟的旅行活动&#xff0c;独木舟可以在港口租到&#xff0c;并且之间没有区别。一条独木舟最多只能乘坐两个人&#xff0c;且乘客的总重量不能超过独木舟的最大…

解决python中遇到的乱码问题

1. 解决中文乱码的一种可行方法 1 # -*- coding:utf-8 -*-2 from __future__ import unicode_literals3 4 import chardet5 6 7 def smart_decoder(raw_content, default_encoding_list("utf-8", "gb18030")):8 """9 将字符串解码成…

db 是个什么鬼?

最近在处理音频部分的内容&#xff0c;我们讨论一个音频的时候&#xff0c;会谈到声音的大小&#xff0c;就是「分贝」。Decibels,分贝这其中还涉及一个东西&#xff0c;就是放大器&#xff0c;声音经过放大器后&#xff0c;就会变成放大后的声音&#xff0c;这个是硬件放大&am…