logback+slf4j作为日志系统
一、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作为日志系统相关推荐
- 使用 logback + slf4j 进行日志记录
此处主要介绍maven web工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...
- slf4j导入那个依赖_学习SPRINGBOOT结合日志门面SLF4J和日志实现LOGBACK的混合使用
一.此处主要介绍在springboot工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在) ...
- error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...
(给ImportNew加星标,提高Java技能) 转自:Hollis 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用.很多时候,日志可能是我们了解应用程序如何执行的唯一 ...
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...
- logback日志pattern_003、Spring Boot使用slf4j进行日志记录
在开发中,我们经常使用 System.out.println() 来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗.我们实际项目中使用的是 slf4j 的 logb ...
- 如何将日志系统切换到 Logback?
作者 | 沉默王二 来源 | 沉默王二(id:cmower) Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是 Ceki G ...
- 老板下了死命令,要把日志系统切换到Logback
Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是巨佬 Ceki Gulcu. 就在昨天,老板听我说完 Logback 有多牛 ...
- slf4j没有在linux中生成日志,logback+SLF4J 没打印日志
logback+SLF4J 没打印日志 为什么?启动时正常,但调用logger.info没打印日志,控制台和文件都没有输出. jar: logback-ext-spring-0.1.3-SNAPSHO ...
- Java日志系统04 ---- slf4j门面日志
目录标题 前言 简介 快速开始 Maven依赖 测试代码 Slf4j整合log4j Slf4j整合logback日志 logback日志简介 Logback使用 logback配置 Log4j项目升级 ...
最新文章
- python06-集合和序列
- bootstrap 点击加号 表格_bootstrap中的输入组按钮,点击加号加1,减1子
- 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率
- Go Concurrency Patterns: Context
- 使用 Swagger 2 构建 RESTful APIs
- Multiple methods named 'status' found with mismatched result, parameter type or attributes
- 实现机器学习的循序渐进指南XII——Apriori
- Windows说明Linux分区和挂载点
- redis介绍及常见用法
- 在ArcGIS Desktop中选择地物要素的方法(二)
- ZooKeeper 的监控
- python实现qq空间自动点赞
- AD2016 交互式网表 InteractiveHtmlBomForAD插件安装教程
- vue3 中使用antd UI组件
- Anaconda Prompt 用法全集
- r55600h和i511320h哪个好
- 人工智能产业盛宴:2019 AIIA开发者大会即将揭幕
- C# unix时间戳 秒、毫秒、微秒。日期 字符串 格式
- 50个直击灵魂的问题_“天台上他问了自己3个问题,放弃了自杀” | 9个直击心灵的灵魂拷问...
- 达梦数据库sql优化实践2
热门文章
- Eclipse自动部署项目到Tomcat的webapps下的有效方法
- 用MyEclipse测试发送email时报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- angular2+typescript在asp.net MVC Web项目上的实现
- Angular提示文件不是一个有效的模块
- 学习笔记6—pandas中ix,loc,iloc有什么区别?
- SublimeText3 插件的使用和本身的配置
- 静态Web开发 JavaScript
- 1、linux网络服务实验 用PuTTY连接Linux
- 6月3号=》66页-70页
- 【SpringBoot 】 组件管理 + 属性注入