原文:http://blog.csdn.net/xiejx618/article/details/41698913

参考:http://spring.io/blog/2009/12/04/logging-dependencies-in-spring

spring默认使用了commons-logging,在集成其它日志框架,slf4j使用了编译时绑定来代替运行时发现.它注定是更高效的(当然slf4j还可以使用占位符绑定等功能).下文介绍spring三种常用方案记录日志,推荐第三种
方案一:commons-logging+Log4J

1.依赖:

<dependency>  <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 

2.在classpath根目录添加log4j.properties或log4j.xml,关于开发的日志级别配置,调得太高,会漏到一些信息看不见,调得太低,输出得太多,看得眼花缭乱,在产品阶段甚至影响应用性能.我觉得开发时,默认(一般依赖也是用默认appender)给WARN,项目本身编写的代码可以给DEBUG,其它另外特别指定,以下是log4j.properties的一个例子:

log4j.rootCategory=WARN, stdout  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n  log4j.category.org.exam=DEBUG
log4j.category.org.springframework.beans.factory=INFO  

根据log4j API(http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html),Category已经过时,应使用Logger代替.而Logger是Category的子类,在Category的所有操作都可以在Logger上执行.以上的properties文件内容应改为

log4j.rootLogger=WARN, stdout  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n  log4j.logger.org.exam=DEBUG
log4j.logger.org.springframework.beans.factory=INFO  

3.代码用法:

import org.apache.log4j.Logger;
public class UserService {  final Logger logger = Logger.getLogger(UserService.class); public boolean save(){ logger.error("虽然A喜欢我,但是我喜欢B"); return true; } } 

方案二:slf4j+Log4J
1.先在spring排除commons-logging.再引入4个包:桥接包jcl-over-slf4j,SLF4J API包slf4j-api,绑定到Log4J的包slf4j-log4j12,Log4J实现包log4j12.

<dependency>  <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> 

2.log4j配置同上.
3.代码用法:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UserService { final Logger logger = LoggerFactory.getLogger(UserService.class); public boolean save(){ logger.error("虽然{}喜欢我,但是我喜欢{}","A","B"); return true; } } 

方案三:slf4j+logback.其中,logback是slf4j原生的实现.

1.先引入logback-classic依赖,它会将其它依赖引入,再在spring排除commons-logging.

<dependency>  <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> 

2.logback配置:查找顺序logback.groovy-->logback-test.xml-->logback.xml,详细配置还是参考文档http://logback.qos.ch/documentation.html.下面是logback.xml例子

<?xml version="1.0" encoding="UTF-8"?>
<configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yy.MM.dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger name="org.exam" level="debug" /> <logger name="org.springframework.beans.factory" level="info" /> <root level="warn"> <appender-ref ref="console"/> </root> </configuration> 

转载于:https://www.cnblogs.com/But-you/p/9722382.html

spring配置日志相关推荐

  1. 使用Spring配置LogBack日志记录

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

  2. SpringBoot ——Spring Boot日志配置

    Spring Boot 采用了 slf4j+logback 的组合形式,Spring Boot也提供对JUL.log4j2.Logback提供了默认配置 1.默认日志配置 修改日志默认级别 2.修改日 ...

  3. Spring Boot——日志配置

    日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要的地位. 为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生 ...

  4. Spring Boot 日志配置 ——logback

    一.logback默认的日志配置 Spring Boot 默认使用的日志框架是logback,如果我们没有自定义配置的话,logback将会使用他为默认的日志配置文件: classpath:logba ...

  5. ELK 处理 Spring Boot 日志,妙!

    以下文章来源方志朋的博客,回复"666"获面试宝典 在排查线上异常的过程中,查询日志总是必不可缺的一部分.现今大多采用的微服务架构,日志被分散在不同的机器上,使得日志的查询变得异常 ...

  6. ELK 处理 Spring Boot 日志,有点强悍!

    在排查线上异常的过程中,查询日志总是必不可缺的一部分.现今大多采用的微服务架构,日志被分散在不同的机器上,使得日志的查询变得异常困难.工欲善其事,必先利其器.如果此时有一个统一的实时日志分析平台,那可 ...

  7. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  8. 让你的spring-boot应用日志随心所欲--spring boot日志深入分析

    1.spring boot日志概述 spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配 ...

  9. Spring Boot日志集成

    Spring Boot日志框架 Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用 ...

最新文章

  1. 国际顶级学术会议CIKM2019北京开幕在即,重量级嘉宾带你窥探人工智能前沿
  2. 3.21日 爬虫小计
  3. 实体服务与虚拟服务迎来数字化发展新契机 中关村助力首都全球数字经济标杆城市建设
  4. php ajax练习
  5. 递归法:杨辉三角,计算第m层的第n个系数
  6. 网站导航(自定义站点地图)
  7. Matlab PlotPub绘图工具箱
  8. AD转换及其相关背景知识
  9. 格式化输出编码问题!
  10. 【MQTT基础篇(一)】MQTT介绍
  11. 了解ESP32睡眠模式及其功耗
  12. mac删除分区并合并分区
  13. 锁屏状态下,看到歌手图片
  14. 洛谷 P1645 序列
  15. 微信健身房小程序开发源码设计方案
  16. OPPO Watch 2五大亮点加持 定位旗舰全智能手表
  17. 高精度数乘法进位c语言,C语言中的高精度乘法
  18. web前端 | 博客(二)登录功能
  19. Vanilla SGD
  20. ubuntu 清理缓存

热门文章

  1. Redis面试常问4-- 如何实现异步队列 Blpop key timeout
  2. 批量取出PHP BOM头
  3. fedora16设置root登录
  4. 《go 语言程序设计》读书笔记(六)Goroutine与系统线程的区别
  5. 《Go 语言程序设计》读书笔记 (三) 方法
  6. Laravel源码分析之Session
  7. 二叉树的链表存储与遍历
  8. 什么是ZooKeeper
  9. redis的内存会不会耗尽
  10. dockerfile构建镜像