LogBack是由Log4j的同一作者创建的用于记录日志的API(较新的实现,它类似于新版本),在本文中,我将展示如何在Spring项目中对其进行集成和使用。

在本教程中,我假设您正在使用一个简单的Spring ROO项目,该项目将为您准备项目的所有结构,有关更多信息,请参见: http : //www.springsource.org/spring-roo 。

首先,您需要在src / main / resources中创建logback.xml (保存配置附加程序,如log4j.properprties):
<?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);}...}
还有另一种将记录器注入Spring Bean的复杂方法,这可以通过开发自定义BeanPostProcessor来实现,该方法将自动将Logger注入带有@Log的字段(这是我们创建的自定义注释),而不是手动实例化如前所述的记录器。
/** 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日志记录相关推荐

  1. spring boot配置logback日志

    spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...

  2. 配置Logback日志

    日志 1.配置日志级别 2.Logback日志 2.1 配置logback日志 2.2 将错误日志输出到文件 2.3 将日志堆栈信息输出到文件 小结 1.配置日志级别 日志记录器(Logger)的行为 ...

  3. SSM配置logback日志

    SSM配置logback日志 添加logback,slf4j依赖 <!--日志--> <dependency><groupId>org.slf4j</grou ...

  4. 【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu

    感谢Master HaKu的分享,博客园的账号忘了,文章里面有原文链接,尊重原创 ELK菜鸟手记 (一) 环境配置+log4j日志记录 - Master HaKu - 博客园 Master HaKu ...

  5. java 如何去掉http debug日志_Spring Boot手把手教学(3):从零配置logback日志

    前言 使用logback我们可以自定义控制台日志输出,可以实现对不同日志不同级别打印到不同的文件中,可以对日志进行归档保存,并定时删除: 对于一个应用来讲,一个好的日志系统,对于对问题的追溯有很大的帮 ...

  6. SpringBoot配置Logback日志详解

    正文 Spring Boot默认集成了Logback,可以开箱即用,非常方便.因为spring-boot-starter-logging是Logback的日志实现,而Spring Boot启动项spr ...

  7. Spring boot统一日志记录

    统一日志记录 开发的时候 用到都是一个框架 很多的框架(slf4j+logback): Spring(commons-logging) Hibernate(jboss-logging) MyBatis ...

  8. SpringBoot配置logback日志 (六)

    Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...

  9. Spring AOP的日志记录

    现在的项目是Spring+MyBatis,前段时间项目经理让我干了一个活,就是给所有的controller里的所有方法加上日志记录的代码,其实没有多少,也就300来个方法,也没有抱怨什么,一边打着瞌睡 ...

最新文章

  1. 手把手教线性回归分析(附R语言实例)
  2. 禁止Win7系统自动安装驱动程序
  3. 详解布局之--静态、自适应、流式、响应式
  4. Arduino作为服务器显示温度,基于Arduino 带LCD显示的电子温度计
  5. 交换机MAC地址学习和转发数据帧的原理
  6. JFinalOA导出Excel
  7. mysql索引类型 优劣_Mysql索引的类型和优缺点详解
  8. 32位linux进程线程在内存中的样子
  9. 关闭报错_Cydia Impactor工具各种报错提示的解决方法!
  10. InnoDB如何实现多版本
  11. Linux 性能测试与分析-转
  12. 毕设题目:Matlab图像修复
  13. 阿里巴巴全资收购中国网络配送平台饿了么
  14. QT编写的数据转曲线工具
  15. mellanox 网卡驱动,Mellanox网卡OFED驱动安装
  16. html 插件 firefox,firefox插件 怎么在firefox里添加插件
  17. Python安全工具编写-pcap流量包重放
  18. 数据分析·零散知识点
  19. 【网络安全】SQL注入-XFF头注入
  20. java程序设计 郑莉_Java程序设计基础-清华大学-计算机科学与技术-郑莉教授-学堂在线-第一章...

热门文章

  1. java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
  2. 设置 JDK环境变量(Windows)
  3. JavaWeb核心常用API一览
  4. graal java_如何在CircleCI上构建支持Graal的JDK8?
  5. java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程
  6. 运动基元_Java更快地对基元数组进行排序?
  7. aws sqs_AWS SQS和Spring JMS集成
  8. java设计模式迭代器模式_迭代器设计模式示例
  9. junit测试线程_一个在自己的线程中运行测试的JUnit规则
  10. Java中的外观设计模式