长治网站制作一般多少钱,个人网页设计源代码,公司建网站的详细步骤,百度快速优化软件前言 1、末尾有完整配置文件 2、日志分为五个等级#xff0c;按照优先级的高低可以分为#xff1a; TRANCE DEBUG INFO WARN ERRORspringboot默认是INFO#xff0c;因此低于INFO的TRACE和DEBUG都不会输出。 可以在properties或yaml配置文件中修改日…前言1、末尾有完整配置文件2、日志分为五个等级按照优先级的高低可以分为TRANCE DEBUG INFO WARN ERRORspringboot默认是INFO因此低于INFO的TRACE和DEBUG都不会输出。可以在properties或yaml配置文件中修改日志级别logging: level: root: debug这里的root可以换成包名精细控制不同包的日志输出级别比如logging: level: com.example.controller: debug com.example.mapper: error3、其次logback的日志分为控制台日志和文件日志。控制台日志也就是我们IDE运行项目时控制台打印的信息。文件日志项目运行时将运行信息写入到指定文件。需要在springboot配置文件或logback配置文件中指定日志文件的位置。引入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-logging/artifactId /dependency解释按理来讲需要引入的是spring-boot-starter-logging依赖但是spring-boot-starter-web间接依赖于spring-boot-starter-logging所以我们只需要引入spring-boot-starter-web即可。使用logbacklogback会自动寻找classpath根部下面的logback.xml所以我们只需要在resource目录下创建logback.xml文件就可以在程序启动时自动加载自定义日志的配置文件。如果不想叫logback.xml想起一个有个性的名字比如cxkLogback.xml那么需要在properties或yaml配置文件指定logback文件路径logging: config: classpath:cxkLogback.xml如果想验证一下可以将下方概览中的配置文件复制到自己的项目中运行一下观察控制台的日志输出格式。配置文件概览可以简单先看一个配置文件的案例?xml version1.0 encodingUTF-8? !-- scan:当配置文件修改后将会重新载入。 scanPeriod:设置检测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。 debug:为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -- configuration scantrue scanPeriod60 seconds debugfalse !-- 定义一个名为STDOUT的控制台输出Appender -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender encoder !-- 输出格式 -- pattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender !-- 定义一个名为FILE的文件输出Appender -- appender nameFILE classch.qos.logback.core.FileAppender !-- 设置日志文件的存放路径和文件名可根据实际情况修改 -- filelogs/app.log/file encoder pattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender !-- 配置根日志记录器设置日志级别为DEBUG并将日志输出到STDOUT和FILE这两个Appender -- root levelinfo appender-ref refSTDOUT / appender-ref refFILE / /root /configuration这个文件主要定义了两个Appender分别输出日志到控制台和文件中。其次定义root目录的日志级别并将两个Appender配置到root目录下进行日志输出。这里的root标签里面定义了level有没有感觉在哪里见过这个东西没错上文讲到我们可以在properties或yaml配置文件中修改日志级别在springboot配置文件中的操作和这里的操作是等价的。那么按照同样的道理这里的root也可以细化成不同的包配置不同的level和Appender。这里只是引出这个概念具体的内容放在下文。配置项详解configurationlogback配置的根标签。它包含三个属性scan、scanPeriod、debug。scan当配置文件修改后将会重新载入。值为true或false。scanPeriod时间间隔。每隔一段时间检测一次配置文件是否被修改。值可以是60或12 second数字是自定义的不是非要填60或12如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。debug是否打印logback内部日志信息实时查看logback运行状态。值为true或false默认。Appender可以理解成负责写日志的工具人。一个Appender就是一个工具人。logger设置某一个包或具体的类的日志打印级别以及指定的Appender分配打工人。root根logger也是logger的一种且只有一个level属性。contextName每个logger都关联到logger上下文默认上下文名称为default。但可以使用contextName标签设置成其他名字用于区分不同应用程序的记录。property用来定义变量值的标签property标签有两个属性name和value其中name的值是变量的名称value的值时变量定义的值。通过property定义的值会被插入到logger上下文中。定义变量后可以使“${name}”来使用变量。Appender的种类ConsoleAppender控制台日志。FileAppender文件日志。RollingFileAppender滚动文件日志。会在日志文件达到某种条件后创建新的日志文件继续写入日志。常见的条件是文件的大小比如设置每个文件大小为2KB时创建新的文件继续写入文件名大致为xxx1.log,xxx2.log。输出格式详解举个例子%level | %d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai} | [%thread] | %-4relative | %logger{40}| -- %msg%n%level日志级别。%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai}时间。[%thread]当前线程。%-4relative从程序启动到当前日志记录事件所经过的相对时间。-表示左对齐4表示4个字符宽度。%logger{40}输出日志记录器名称的占位符其中40是一个可选的参数用于指定输出的日志记录器名称的最大长度。如果不指定{40}这样的参数默认会输出完整的日志记录器名称。%msg日志消息主体。%n换行。%file文件名。%line行号。配置文件示例?xml version1.0 encodingUTF-8? !-- scan:当配置文件修改后将会重新载入。 scanPeriod:设置检测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。 debug:为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -- configuration scantrue scanPeriod60 seconds debugfalse !-- 日志文件路径,如果spring配置文件没有对应值使用默认值 -- springProperty scopecontext namespringFilePath sourcelog.path defaultValuesrc/main/resources/log/ !-- 将日志输出到控制台 -- appender nameconsole classch.qos.logback.core.ConsoleAppender encoder pattern%level | %d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai} | [%thread] | %-4relative | %logger{40}| -- %msg%n/pattern charsetUTF-8/charset /encoder /appender !-- 将日志输出到文件 -- !-- 使用轮转日志:日志文件超出一定大小后会新建一个文件Rolling -- appender namefile classch.qos.logback.core.rolling.RollingFileAppender !-- 设置文件路径 -- file${springFilePath}/spring.log/file encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %thread -- %msg%n/pattern charsetutf-8/charset /encoder !-- 基于时间和大小的滚动策略 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 日志文件输出的文件名 -- fileNamePattern${springFilePath}/spring.%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 单个日志文件最大体积超出最大值会新建一个日志文件-- maxFileSize200MB/maxFileSize !-- 日志文件保留天数 -- maxHistory60/maxHistory !-- 所有日志文件的总体积限制 -- totalSizeCap20GB/totalSizeCap /rollingPolicy /appender !-- root节点时必选节点用来指定最基础的日志输出级别只有一个level属性 -- root levelinfo appender-ref refconsole / appender-ref reffile / /root /configuration给日志配置颜色方式一、使用官方默认配置只需要在xml配置文件里引入配置文件即可。include resourceorg/springframework/boot/logging/logback/defaults.xml/什么你问我这个文件去哪里找根据resource里面的路径去lib目录的springboot依赖中找。方式二、自定义颜色配置使用形如%clr(){red}来给日志标签配置颜色。要使用%clr有两种方式第一种是引入方式一的默认配置文件在该文件里面就帮我们引入了%clr。第二种方式就是手动引入%clr可以参考一下defaults.xml。conversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter /%clr支持的颜色blue、cyan、faint、green、magenta、red、yellowfaint淡色控制台默认颜色magenta品红色这里贴一下我的pattern%level | %clr(%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai}){magenta} | [%thread] | %-4relative | %clr(%logger{40}){magenta}| -- %msg%n那这个时候你就会发现了这样自定义的话我的level怎么没有颜色啊。不要担心有解决办法的。这里提供两种解决办法第一种可以更改一下logback中%clr对于level的判断针对不同level显示不同颜色但是这个我还不会所以自行探索。第二种要用的是%highlight高亮。使用%highlight给level配置颜色第一步、新建一个高亮颜色配置类。import ch.qos.logback.classic.Level; import ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter; import ch.qos.logback.classic.spi.ILoggingEvent; import static ch.qos.logback.core.pattern.color.ANSIConstants.*; import static ch.qos.logback.core.pattern.color.ANSIConstants.DEFAULT_FG; /** * 自定义 %highlight实现不同日志level不同颜色 */ public class LevelHighLightColorConfig extends HighlightingCompositeConverter { // 这里用的版本是springboot 2.6.13 // 如果你发现父类中的方法不是getForegroundColorCode可能是版本差异造成的。 // 那么需要你对着父类ctrl左键点击看看父类是怎么实现的 // 然后照猫画虎继续修改核心逻辑就是判断然后返回不同的颜色。 // 因为作者跟着AI配置的时候就遇到这种情况也是模仿父类进行修改的。 Override protected String getForegroundColorCode(ILoggingEvent event) { Level level event.getLevel(); switch (level.toInt()) { case Level.ERROR_INT: return RED_FG; case Level.WARN_INT: return YELLOW_FG; case Level.INFO_INT: return GREEN_FG; default: return DEFAULT_FG; } } }第二步、在logback.xml配置文件中引入我们的%highlightconversionWord的值固定为highlightconverterClass的值为我们上一步写的配置类。conversionRule conversionWordhighlight converterClasscom.yexiao.userCenter.config.LevelHighLightColorConfig /第三步、编写patternpattern%highlight(%level) | %clr(%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai}){magenta} | [%thread] | %-4relative | %clr(%logger{40}){magenta}| -- %msg%n/pattern完整配置文件?xml version1.0 encodingUTF-8? !-- scan:当配置文件修改后将会重新载入。 scanPeriod:设置检测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。 debug:为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -- configuration scantrue scanPeriod60 seconds debugfalse include resourceorg/springframework/boot/logging/logback/defaults.xml/ conversionRule conversionWordhighlight converterClasscom.yexiao.userCenter.config.LevelHighLightColorConfig / !-- 日志文件路径,如果spring配置文件没有对应值使用默认值 -- springProperty scopecontext namespringFilePath sourcelog.path defaultValuesrc/main/resources/log/ !-- 将日志输出到控制台 -- appender nameconsole classch.qos.logback.core.ConsoleAppender encoder pattern%highlight(%level) | %clr(%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai}){magenta} | [%thread] | %-4relative | %clr(%logger{40}){magenta}| -- %msg%n/pattern charsetUTF-8/charset /encoder /appender !-- 将日志输出到文件 -- !-- 使用轮转日志:日志文件超出一定大小后会新建一个文件Rolling -- appender namefile classch.qos.logback.core.rolling.RollingFileAppender !-- 设置文件路径 -- file${springFilePath}/spring.log/file !-- 基于时间和大小的滚动策略 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 日志文件输出的文件名 -- fileNamePattern${springFilePath}/spring.%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 单个日志文件最大体积超出最大值会新建一个日志文件-- maxFileSize200MB/maxFileSize !-- 日志文件保留天数 -- maxHistory60/maxHistory !-- 所有日志文件的总体积限制 -- totalSizeCap20GB/totalSizeCap /rollingPolicy encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %thread -- %msg%n/pattern charsetutf-8/charset /encoder /appender !-- root节点时必选节点用来指定最基础的日志输出级别只有一个level属性 -- root levelinfo appender-ref refconsole / appender-ref reffile / /root /configuration1Tips1、文件路径配置问题文件路径有两种方式配置分别是file和path或者在xml文件中配置。注file和path二者不能同时使用如若同时使用则只有logging.file生效 logging.file文件名 logging.path日志文件路径 logging.level.包名指定包下的日志级别 logging.pattern.console日志打印规则logging.file设置文件可以是绝对路径也可以是相对路径。如logging.filemy.loglogging.path设置目录会在该目录下创建spring.log文件并写入日志内容如logging.path/var/log注二者不能同时使用如若同时使用则只有logging.file生效可以看到这种方式配置简单但是能实现的功能也非常有限如果想要更复杂的需求就需要下面的定制化配置了。2、使用%clr添加颜色启动报错完整报错如下Exception in thread main java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.pattern.parser.Compiler7a362b6b - There is no conversion class registered for composite conversion word [clr] ERROR in ch.qos.logback.core.pattern.parser.Compiler7a362b6b - Failed to create converter for [%clr] keyword ERROR in ch.qos.logback.core.pattern.parser.Compiler7a362b6b - There is no conversion class registered for composite conversion word [clr] ERROR in ch.qos.logback.core.pattern.parser.Compiler7a362b6b - Failed to create converter for [%clr] keyword at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:166) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:82) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:114) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:264) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:237) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:200) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:173) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:358) at org.springframework.boot.SpringApplication.run(SpringApplication.java:317) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) at com.kaka.jtest.springboot.Application.main(Application.java:24)解决办法没有引入%clr需要引入默认的配置文件include resourceorg/springframework/boot/logging/logback/defaults.xml/或手动引入%clrconversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter /3、不要在日志文件里面使用颜色输出使用颜色输出会将颜色转换成ANSI码不会有颜色可读性较差。参考链接【1】SpringBootlogback优雅的配置日志【2】logback官方配置文档