php7跨设备网站开发pdf,重装wordpress,开源企业网站系统,北京环球影城客流量统计从哪里看spring boot配置logback日志 在上一篇spring boot入门里提过#xff0c;Spring Boot默认的日志打印是logback,所以配置logback日志会很简单#xff0c;但是也有注意的地方。
本次配置日志的需求
日志需要控制台打印和文件打印两种。其中文件打印按照日志级别分别保存到各自…spring boot配置logback日志 在上一篇spring boot入门里提过Spring Boot默认的日志打印是logback,所以配置logback日志会很简单但是也有注意的地方。
本次配置日志的需求
日志需要控制台打印和文件打印两种。其中文件打印按照日志级别分别保存到各自的文件里。文件日志每天一个日志并且保存30天。文件日志可以自由指定保存路径、打印格式等。控制台打印可指定打印格式并且自由增加删除某些日志。
通过上一篇的介绍知道Spring boot默认日志为logback所以只要引入如下依赖就会自动引入logback日志的jar包。
!-- Spring Boot Web 依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency单独spring 项目使用 logback日志需要的jar包如下
dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.1.9/version
/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactIdversion1.1.9/version
/dependency
!--因logback日志需要与slf4j配合使用如下的jar包需要引入--
dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.22/version
/dependency1234567891011121314151617再说一遍spring boot项目不需要引入上边的三个jar包已经自动引入了。
以下是配置步骤
logback日志的在spring boot里的配置需要在src/main/resources下application.properties同级放一个logback的xml文件一般起名字为logback-spring.xml网上很多人建议起名字为这个我没看出有什么区别所以我就按照他们讲的配置了以免出现不必要的错误。logback-spring.xml按照我的需求配置成控制台打印和文件打印直接将以下内容复制并命名成该名字放到上边说的位置中具体的内容如下
?xml version1.0 encodingUTF-8?
configuration scantrue scanPeriod60 seconds !-- 都说spring boot使用日志需要引入这个但是我引入了之后总是打印两份日志所以我去除了并不影响使用 --!-- include resourceorg/springframework/boot/logging/logback/base.xml/ --!-- 控制台设置 -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender encoder pattern${CONSOLE_LOG_PATTERN}/pattern /encoder /appender !-- INFO -- appender nameinfoAppender classch.qos.logback.core.rolling.RollingFileAppender !-- 文件路径 注意LOG_PATH是默认值它的配置对应application.properties里的logging.path值-- file${LOG_PATH}/info/info.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 文件名称 -- fileNamePatterninfo/info-%d{yyyy-MM-dd}.log /fileNamePattern !-- 文件最大保存历史数量 -- MaxHistory30/MaxHistory /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern /encoder filter classch.qos.logback.classic.filter.LevelFilter levelINFO/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender!-- DEBUG -- appender namedebugAppender classch.qos.logback.core.rolling.RollingFileAppender !-- 文件路径 注意LOG_PATH是默认值它的配置对应application.properties里的logging.path值-- file${LOG_PATH}/debug/debug.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 文件名称 -- fileNamePatterndebug/debug-%d{yyyy-MM-dd}.log/fileNamePattern !-- 文件最大保存历史数量 -- MaxHistory30/MaxHistory /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern /encoder filter classch.qos.logback.classic.filter.LevelFilter levelDEBUG/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- WARN -- appender namewarnAppender classch.qos.logback.core.rolling.RollingFileAppender !-- 文件路径 注意LOG_PATH是默认值它的配置对应application.properties里的logging.path值-- file${LOG_PATH}/warn/warn.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 文件名称 -- fileNamePatternwarn/warn-%d{yyyy-MM-dd}.log /fileNamePattern !-- 文件最大保存历史数量 -- MaxHistory30/MaxHistory /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern /encoder filter classch.qos.logback.classic.filter.LevelFilter levelWARN/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- ERROR -- appender nameerrorAppender classch.qos.logback.core.rolling.RollingFileAppender !-- 文件路径 注意LOG_PATH是默认值它的配置对应application.properties里的logging.path值-- file${LOG_PATH}/error/error.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 文件名称 -- fileNamePatternerror/error-%d{yyyy-MM-dd}.log /fileNamePattern !-- 文件最大保存历史数量 -- MaxHistory30/MaxHistory /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern /encoder filter classch.qos.logback.classic.filter.LevelFilter levelERROR/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appenderlogger nameorg.springframework additivityfalselevel valueERROR /appender-ref refSTDOUT /appender-ref referrorAppender //logger!-- 由于启动的时候以下两个包下打印debug级别日志很多 所以调到ERROR--logger nameorg.apache.tomcat.util additivityfalselevel valueERROR/appender-ref refSTDOUT/appender-ref referrorAppender//logger!-- 默认spring boot导入hibernate很多的依赖包启动的时候会有hibernate相关的内容直接去除 --logger nameorg.hibernate.validator additivityfalselevel valueERROR/appender-ref refSTDOUT/appender-ref referrorAppender//loggerroot levelDEBUGappender-ref refSTDOUT/ appender-ref refinfoAppender/appender-ref refdebugAppender/appender-ref refwarnAppender/appender-ref referrorAppender//root
/configuration其中,你们应该注意到里边有很多的“${}”形式的变量这其实是logback日志的默认名称比如${LOG_PATH},${CONSOLE_LOG_PATTERN},${FILE_LOG_PATTERN} 等这些变量只需要在spring boot的默认配置文件application.properties里添加如下配置即可
1以下是日志输出的位置注意在logback-spring.xml里用LOG_PATH才能获取到值
logging.pathd:/logs/springBoot2以下是指向日志配置文件的位置
logging.configclasspath:logback-spring.xml3以下是控制台打印日志格式设置注意在logback-spring.xml里用CONSOLE_LOG_PATTERN才能获取
logging.pattern.console[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n4以下是文件打印日志格式设置注意在logback-spring.xml里用FILE_LOG_PATTERN才能获取到
logging.pattern.file[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n添加上边四个配置就对日志配置完了。多说一句为什么在application.properties文件里的日志配置名字和${} 里不同呢这就需要看logback-spring.xml里最上边的base.xml引入找到这个文件就明白了。它的位置在以下jar包里
spring-boot-1.5.1.RELEASE.jar找到如下位置
org.springframework.boot.logging.logback就会看到里边有base.xml、console-appender.xml等等四个xml文件打开file.appender.xml如下 也就是说spring boot里的日志配置文件已经将其写死但是在application.properties里又要按照其要求写所以我感觉这也是spring boot的缺点太多隐藏的配置了如果知道那很简单了但是不知道就会浪费很多的时间多配置很多的无用东西。
通过这四个spring boot的日志xml文件也应该知道为什么在上一篇入门spring boot里没有配置日志却打印日志的原因其内在自己的日志应该就是这个。
另外说一下日志的打印控制比如有一些打印日志我不想要就可以通过配置logback-spring.xml文件添加一个logger标签即可。比如如下
[2021-06-05 19:14:23] -- [INFO ]: [org.I0Itec.zkclient.ZkClient] -- zookeeper state changed (SyncConnected)
[2021-06-05 19:14:23] -- [DEBUG]: [org.I0Itec.zkclient.ZkClient] -- Leaving process event
[2021-06-05 19:14:23] -- [DEBUG]: [org.I0Itec.zkclient.ZkClient] -- State is SyncConnected123以上三条日志我现在不需要让它打印了那就需要额外配置了因为它们来自于org.I0Itec.zkclient.ZkClient 类并且打印的内容分别是DEBUG和INFO级别日志打印只要将该类的日志打印级别调高日志从低到高为 TRACE、DEBUG、INFO、WARN、ERROR因此只要将该类的日志级别配置为WARN以上就不会打印上边的内容了。配置方法如下 logger nameorg.I0Itec.zkclient.ZkClient additivityfalselevel valueERROR /appender-ref refSTDOUT /appender-ref referrorAppender /
/logger其中
name表示日志的打印位置从上边可以看出是来自该类。 additivity设置为false表示该日志打印设置控制台打印还是文件打印等具体设置不会向根root标签传递也就是说该logger里怎么设置的那就会怎么打印跟root无关。 level value’error’表示将该类日志级别设置为error级才会打印。 最后两行表示error级时会打印控制台和error文件同时打印日志。
配置logback日志的注意点 logback和log4j最好不要放在一起会冲突最主要的jar包是slf4j-log4j12.jar 和 logback-classic.jar 这两个jar包的设计简直是反人类有一个类这两个都会有只要这两个jar包同时引入就会看到启动spring boot会有一串冲突的红字因此只要用logback日志就需要特别注意除了排除log4j主要jar包别忘了排除slf4j-log4j12.jar 具体的排除方法可以选择maven项目的pom.xml在右边找到Dependency Hierarchy然后找到要排除的jar包右击选择Exclude Maven Artifact然后保存即可。 logback的logback-spring.xml文件如果你没有按照我这么写在application.properties文件里就不需要配置全部的4行内容如果直接复制的我的那就需要配置上了。 logback貌似没有log4j常用很多的第三方jar包都使用的log4j比如aliba的dubbo和zookeeper都是默认的log4j所以你在引入第三方的jar时又使用的是logback就特别注意是不是它们默认使用的log4j如果是的话有slf4j-log4j12.jar 就排除即可。后边说spring bootdubbo时会再说。