使用Spring配置LogBack日志记录
LogBack是由Log4j的同一作者创建的用于记录日志的API(较新的实现,它类似于新版本),在本文中,我将展示如何在Spring项目中对其进行集成和使用。
在本教程中,我假设您正在使用一个简单的Spring ROO项目,该项目将为您准备项目的所有结构,有关更多信息,请参见: http : //www.springsource.org/spring-roo 。
<?xml version="1.0" encoding="UTF-8"?><configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d %5p | %t | %-55logger{55} | %m %n</pattern></encoder></appender><logger name="test.myapp.repos"><level value="INFO" /></logger><logger name="org.springframework"><level value="INFO" /></logger><root><level value="INFO" /><appender-ref ref="CONSOLE" /></root></configuration>
第二步是配置Maven依赖项并添加LogBack所需的库:
<-- Properties Settings --><properties><roo.version>1.1.0.RELEASE</roo.version><spring.version>3.0.5.RELEASE</spring.version><aspectj.version>1.6.10</aspectj.version><slf4j.version>1.6.1</slf4j.version><logback.version>0.9.26</logback.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><-- Dependencies Settings --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId><version>${logback.version}</version></dependency>
您需要摆脱由Spring ROO生成的Maven pom.xml中的所有Log4j依赖关系,在添加提供的用于设置LogBack的代码之前,清除与日志记录相关的每个依赖关系。
为了在正在开发的类上使用记录器,您需要创建它的静态实例并在使用Log4J时正常使用,唯一的区别是LogBack与Log4j的实现和配置代码。 在Logback.xml上,必须扫描您的类以使记录器正常工作。
package test.myapp.repos; /*This package figures on LogBack.xml*/import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class MyTestClass {static Logger logger = LoggerFactory.getLogger(ItemController.class);...public void create(String args) {logger.debug("My Args Is => " + args);}...}
/** Custom @Logger annotation **/@Retention(RUNTIME)@Target(FIELD)@Documentedpublic @interface Log { }/** LoggerPostProcessor => Custom Spring BeanPostProcessor **/public class LoggerPostProcessor implements BeanPostProcessor {public Object postProcessAfterInitialization(Object bean, String beanName) throwsBeansException {return bean;}public Object postProcessBeforeInitialization(final Object bean, String beanName)throws BeansException {ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() {@SuppressWarnings("unchecked")public void doWith(Field field) throws IllegalArgumentException,IllegalAccessException {ReflectionUtils.makeAccessible(field);//Check if the field is annoted with @Logif (field.getAnnotation(Log.class) != null) {Log logAnnotation = field.getAnnotation(Log.class);Logger logger = LoggerFactory.getLogger(bean.getClass());field.set(bean, logger);}}});return bean;}}/** Usage on a Spring Bean **/@Componentpublic class MyBeanImpl implements MyBean {/** Not manual set up code **/@Log Logger myLogger;...}
最后要做的是在您的applicationContext.xml文件中声明这个新的BeanPostProcessor:
<!-- The Logger Injector --><bean id="LogginInjector" class="ma.oncf.achat.utils.LoggerPostProcessor" />
有关为什么切换到LogBack的更多信息,请参阅: 为什么切换到LogBack 。
参考:来自Fancy UI博客的JCG合作伙伴 Idriss Mrabti使用Spring配置LogBack Logging 。
相关文章 :
- Spring 3.1和Hibernate的持久层
- 使用Spring和Java泛型简化数据访问层
- Spring陷阱:事务测试被认为是有害的
- Log4j,Stat4j,SMTPAppender集成–汇总错误日志以发送太多电子邮件
- Java日志混乱
- 正确记录应用程序的10个技巧
- 首先记录异常的根本原因
翻译自: https://www.javacodegeeks.com/2011/12/configure-logback-logging-with-spring.html
使用Spring配置LogBack日志记录相关推荐
- spring boot配置logback日志
spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...
- 配置Logback日志
日志 1.配置日志级别 2.Logback日志 2.1 配置logback日志 2.2 将错误日志输出到文件 2.3 将日志堆栈信息输出到文件 小结 1.配置日志级别 日志记录器(Logger)的行为 ...
- SSM配置logback日志
SSM配置logback日志 添加logback,slf4j依赖 <!--日志--> <dependency><groupId>org.slf4j</grou ...
- 【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu
感谢Master HaKu的分享,博客园的账号忘了,文章里面有原文链接,尊重原创 ELK菜鸟手记 (一) 环境配置+log4j日志记录 - Master HaKu - 博客园 Master HaKu ...
- java 如何去掉http debug日志_Spring Boot手把手教学(3):从零配置logback日志
前言 使用logback我们可以自定义控制台日志输出,可以实现对不同日志不同级别打印到不同的文件中,可以对日志进行归档保存,并定时删除: 对于一个应用来讲,一个好的日志系统,对于对问题的追溯有很大的帮 ...
- SpringBoot配置Logback日志详解
正文 Spring Boot默认集成了Logback,可以开箱即用,非常方便.因为spring-boot-starter-logging是Logback的日志实现,而Spring Boot启动项spr ...
- Spring boot统一日志记录
统一日志记录 开发的时候 用到都是一个框架 很多的框架(slf4j+logback): Spring(commons-logging) Hibernate(jboss-logging) MyBatis ...
- SpringBoot配置logback日志 (六)
Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...
- Spring AOP的日志记录
现在的项目是Spring+MyBatis,前段时间项目经理让我干了一个活,就是给所有的controller里的所有方法加上日志记录的代码,其实没有多少,也就300来个方法,也没有抱怨什么,一边打着瞌睡 ...
最新文章
- 手把手教线性回归分析(附R语言实例)
- 禁止Win7系统自动安装驱动程序
- 详解布局之--静态、自适应、流式、响应式
- Arduino作为服务器显示温度,基于Arduino 带LCD显示的电子温度计
- 交换机MAC地址学习和转发数据帧的原理
- JFinalOA导出Excel
- mysql索引类型 优劣_Mysql索引的类型和优缺点详解
- 32位linux进程线程在内存中的样子
- 关闭报错_Cydia Impactor工具各种报错提示的解决方法!
- InnoDB如何实现多版本
- Linux 性能测试与分析-转
- 毕设题目:Matlab图像修复
- 阿里巴巴全资收购中国网络配送平台饿了么
- QT编写的数据转曲线工具
- mellanox 网卡驱动,Mellanox网卡OFED驱动安装
- html 插件 firefox,firefox插件 怎么在firefox里添加插件
- Python安全工具编写-pcap流量包重放
- 数据分析·零散知识点
- 【网络安全】SQL注入-XFF头注入
- java程序设计 郑莉_Java程序设计基础-清华大学-计算机科学与技术-郑莉教授-学堂在线-第一章...
热门文章
- java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
- 设置 JDK环境变量(Windows)
- JavaWeb核心常用API一览
- graal java_如何在CircleCI上构建支持Graal的JDK8?
- java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程
- 运动基元_Java更快地对基元数组进行排序?
- aws sqs_AWS SQS和Spring JMS集成
- java设计模式迭代器模式_迭代器设计模式示例
- junit测试线程_一个在自己的线程中运行测试的JUnit规则
- Java中的外观设计模式