一、logback简介

log4j和logback作者是同一人:CekiGülcü。log4j和logback都是实打实的日志系统。
commons-logging,slf4j这两者是日志大管家。slf4j几乎完爆commons-logging。

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:

  • logback-core
  • logback- classic
  • logback-access

logback-core是其logback-classic和logback-access的基础模块,另两个模块只是对core模块进行一些封装
logback-classic在logback-core的基础上遵循slf4j的标准实现日志系统,在maven中配置时,只配置logback-classic就够了,因为它会自动引入logback-core包。
此外logback-classic完整实现了SLF4J API。也就是说,logback-classsic服从slf4j这个日志大管家的管理。这就使我们可以很方便地更换成其它日志系统,如log4j或JDK14 Logging。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

slf4j是一个大管家,它管着

  • java.util.logging,中间的协调人是slf4j-jdk14.jar
  • log4j,中间的协调人是slf4j-log4j12.jar
  • logback-core,中间的协调人是logback-classic

二、一份够用的logback配置

使用logback+slf4j只需要两个依赖:slf4j和logback-classic,其中logback-classic会自动引用logback-core
pom.xml中添加依赖

        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version></dependency>

需要注意的是slf4j的版本跟logback-classic的版本、JDK的版本协调一致。

slf4j对开发者非常友好,它把几乎可能遇到的问题全部列出来了,抛出警告时直接抛出一个url,在这个网页上一看便知是何原因:https://www.slf4j.org/codes.html#version_mismatch
这是一种非常优美的设计:抛出异常时,给出一个URL。

下面是logback配置,logback支持groovy、xml等多种语法配置。
注意,在logback.xml中可以配置property,属性可以引用user.home,user.dir等目录。

  • 最佳实践是把全部的日志相关的配置都放在logback.xml中足够了。
  • 日志存放位置应该跟webapp目录分离,最好放在user.home/webappName-log目录下
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="10 seconds"><include resource="org/springframework/boot/logging/logback/base.xml"/><property name="LOG_PATH" value="${user.home}/come/logs"/><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><File>${LOG_PATH}/info.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>2</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></appender><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><File>${LOG_PATH}/error.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>2</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></appender><root level="INFO"><appender-ref ref="INFO_FILE"/><appender-ref ref="ERROR_FILE"/></root>
</configuration>

对于logback,官方没有XSD这样的XML文档格式定义的,但是民间有。
https://stackoverflow.com/questions/5731162/xml-schema-or-dtd-for-logback-xml

三、我说

日志系统是成熟语言的标配。任何系统只要部署到服务器肯定需要日志。不然出了问题根本没法定位错误。
日志系统的好坏普通用户是感觉不到的,比如log4j和logback到底哪个更好,我认为二者差别并不大,选择上也不用太纠结。logback是后起之秀,这倒是事实。
不要试图搞清楚日志系统的每一个细节。日志系统庞大复杂,作者都是大牛级人物。看上去日志很简单,可是现代化的日志功能非常丰富:比如说定义输出格式,定义输出位置,定义存储日志文件的策略(包括定时压缩、定时删除、定时回滚覆盖等等)。在平时应用上,找到一份比较够用的配置文件基本上就足以应对一切日志问题了。
不要试图弄清楚世界上的每一个细节。

转载于:https://www.cnblogs.com/weiyinfu/p/7384901.html

logback+slf4j作为日志系统相关推荐

  1. 使用 logback + slf4j 进行日志记录

    此处主要介绍maven web工程下如何使用 logback + slf4j  进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...

  2. slf4j导入那个依赖_学习SPRINGBOOT结合日志门面SLF4J和日志实现LOGBACK的混合使用

    一.此处主要介绍在springboot工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在) ...

  3. error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...

    (给ImportNew加星标,提高Java技能) 转自:Hollis 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用.很多时候,日志可能是我们了解应用程序如何执行的唯一 ...

  4. 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案

    一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...

  5. logback日志pattern_003、Spring Boot使用slf4j进行日志记录

    在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...

  6. 如何将日志系统切换到 Logback?

    作者 | 沉默王二 来源 | 沉默王二(id:cmower) Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是 Ceki G ...

  7. 老板下了死命令,要把日志系统切换到Logback

    Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是巨佬 Ceki Gulcu. 就在昨天,老板听我说完 Logback 有多牛 ...

  8. slf4j没有在linux中生成日志,logback+SLF4J 没打印日志

    logback+SLF4J 没打印日志 为什么?启动时正常,但调用logger.info没打印日志,控制台和文件都没有输出. jar: logback-ext-spring-0.1.3-SNAPSHO ...

  9. Java日志系统04 ---- slf4j门面日志

    目录标题 前言 简介 快速开始 Maven依赖 测试代码 Slf4j整合log4j Slf4j整合logback日志 logback日志简介 Logback使用 logback配置 Log4j项目升级 ...

最新文章

  1. python06-集合和序列
  2. bootstrap 点击加号 表格_bootstrap中的输入组按钮,点击加号加1,减1子
  3. 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率
  4. Go Concurrency Patterns: Context
  5. 使用 Swagger 2 构建 RESTful APIs
  6. Multiple methods named 'status' found with mismatched result, parameter type or attributes
  7. 实现机器学习的循序渐进指南XII——Apriori
  8. Windows说明Linux分区和挂载点
  9. redis介绍及常见用法
  10. 在ArcGIS Desktop中选择地物要素的方法(二)
  11. ZooKeeper 的监控
  12. python实现qq空间自动点赞
  13. AD2016 交互式网表 InteractiveHtmlBomForAD插件安装教程
  14. vue3 中使用antd UI组件
  15. Anaconda Prompt 用法全集
  16. r55600h和i511320h哪个好
  17. 人工智能产业盛宴:2019 AIIA开发者大会即将揭幕
  18. C# unix时间戳 秒、毫秒、微秒。日期 字符串 格式
  19. 50个直击灵魂的问题_“天台上他问了自己3个问题,放弃了自杀” | 9个直击心灵的灵魂拷问...
  20. 达梦数据库sql优化实践2

热门文章

  1. Eclipse自动部署项目到Tomcat的webapps下的有效方法
  2. 用MyEclipse测试发送email时报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
  3. angular2+typescript在asp.net MVC Web项目上的实现
  4. Angular提示文件不是一个有效的模块
  5. 学习笔记6—pandas中ix,loc,iloc有什么区别?
  6. SublimeText3 插件的使用和本身的配置
  7. 静态Web开发 JavaScript
  8. 1、linux网络服务实验 用PuTTY连接Linux
  9. 6月3号=》66页-70页
  10. 【SpringBoot 】 组件管理 + 属性注入