file-type

LogBack日志工具的使用与LogTest示例解析

ZIP文件

下载需积分: 4 | 12.53MB | 更新于2025-05-28 | 170 浏览量 | 2 下载量 举报 收藏
download 立即下载
标题 "LogBack.zip" 指示了我们接下来要探讨的主题是关于 LogBack 的内容,它是一个广泛使用的 Java 日志框架,属于 SLF4J(简单日志门面)的一部分,用于提供日志记录功能。LogBack 以其性能和灵活性著称,广泛应用于各种 Java 应用中。本文将详细介绍 LogBack 的使用方法及相关知识点。 描述 "logback使用" 告诉我们这个 Zip 压缩包将包含有关 LogBack 日志框架的使用示例或者相关配置文件。这些内容将涉及如何配置和使用 LogBack 以及在实际开发中如何通过 LogBack 进行有效的日志管理。 标签 "logback日志" 进一步强调了文章将围绕 LogBack 日志框架展开,它是一个非常关键的知识点,特别是在 Java 应用开发中,合理使用日志框架可以帮助开发者进行问题追踪、性能监控以及安全审核等。 压缩包子文件的文件名称列表 "LogTest" 可能是一个示例项目或者测试项目,用来演示 LogBack 的功能和配置。这可能是包含 Java 源代码文件、配置文件以及可能的文档说明的完整项目。 知识点详述: 1. LogBack 概述 LogBack 是 SLF4J 的默认实现,由 Ceki Gülcü 开发,旨在提供一个快速、可靠且灵活的 Java 日志系统。LogBack 提供三种日志记录的方式:logback-core(基础模块),logback-classic(实现了 SLF4J API),logback-access(与 Servlet 容器集成,提供 HTTP 访问日志功能)。 2. LogBack 优点 LogBack 具有自动重载配置文件的能力,无需重启应用即可应用新的日志配置。它的性能非常高,特别是在异步日志记录方面。LogBack 还支持过滤器,可以根据日志级别、日志属性等条件决定是否记录某条日志。此外,它还提供了丰富的配置选项,如滚动生成日志文件(归档)。 3. LogBack 配置文件 LogBack 依赖配置文件来确定日志记录行为,主要的配置文件有三种: - logback.xml:LogBack 默认的配置文件名称,通常位于类路径下。 - logback-test.xml:在测试环境中使用,便于开发人员和测试人员自定义日志记录行为。 - logback.groovy:使用 Groovy 语言编写的配置文件,支持动态语言特性。 这些文件可以定义 appender(指定日志输出位置和方式)、logger(日志记录的组件)以及 root logger(根日志记录器)。 4. Appender 类型 Appender 是 LogBack 架构中的核心组件,负责定义日志的输出目标。常见的 appender 有: - ConsoleAppender:将日志输出到控制台。 - FileAppender:将日志写入到文件系统中的文件。 - RollingFileAppender:在文件达到一定大小时滚动创建新文件,便于日志管理。 - SMTPAppender:发送电子邮件通知。 - SyslogAppender:发送日志到 Syslog 服务。 5. 日志级别 LogBack 支持多个日志级别,主要的日志级别包括: - TRACE:追踪级别,用于调试最详细的信息。 - DEBUG:调试级别,记录系统运行中的细粒度信息。 - INFO:信息级别,记录常规的操作信息。 - WARN:警告级别,记录潜在问题。 - ERROR:错误级别,记录程序错误。 - FATAL:致命级别,记录最严重的错误事件,可能导致程序退出。 6. 日志格式 在 LogBack 配置中可以定义日志的格式。格式化器(PatternLayout)允许用户自定义输出日志的格式,常见的格式化指令有 %d{HH:mm:ss.SSS}(时间),%thread(线程名),%-5level(日志级别),%logger(logger 名称),%msg(日志消息)等。 7. 依赖管理 LogBack 作为日志框架,需要在项目中通过 Maven 或 Gradle 等构建工具进行依赖管理。配置好依赖后,即可在项目中使用 LogBack 的 API 进行日志记录。 8. LogBack 的实际应用场景 实际开发中,LogBack 通常用于记录应用的运行状况,错误排查,性能监控,以及安全审计等。它支持在不同的环境下(开发、测试、生产)配置不同的日志策略,方便问题追踪和分析。 9. LogBack 与 SLF4J 的集成 LogBack 经常与 SLF4J 结合使用,SLF4J 作为一个日志门面,负责定义日志的接口规范,而 LogBack 作为其实际的日志实现。这样做的好处是,可以在不改动日志代码的情况下切换底层的日志实现。 10. 异常处理 在使用 LogBack 时,需要考虑到异常处理,例如配置文件错误、文件写入权限问题等。LogBack 本身提供了自动重载配置的能力,当配置文件出现错误时,它会自动回滚到上一个有效的配置,并输出错误日志提示用户问题所在。 11. 扩展与自定义 LogBack 具有良好的扩展性,开发者可以自定义 Appender 和 Layout,甚至编写自定义的过滤器来满足特定的记录需求。 12. 高级特性 LogBack 还包括一些高级特性,比如 MDC(Mapped Diagnostic Context,映射诊断上下文),它允许在日志记录中使用键值对,从而可以在日志中输出特定的上下文信息,这对于区分多线程日志或用户请求日志非常有用。 13. 实际测试 在项目中集成 LogBack 后,需要进行实际的日志记录测试。这包括配置文件测试、性能测试、记录不同级别日志的测试等。确保在不同的使用场景下日志记录都能按照预期工作。 14. 社区与支持 LogBack 有着活跃的社区,也定期更新维护,提供了很好的社区支持。开发者在使用过程中遇到问题可以在社区提问或查阅相关文档。 15. 文档与资源 LogBack 官方文档非常全面,涵盖了从基础到高级特性的所有信息,是学习和使用 LogBack 的宝贵资源。另外,还有许多第三方教程、示例代码、最佳实践等资源可供参考。 以上详细介绍了 LogBack 这一 Java 日志框架的核心知识点,从基本概念到配置方法,从日志级别到性能优化,从异常处理到高级特性,希望这些信息能够帮助开发者更好地理解和运用 LogBack。

相关推荐

filetype

分析异常:Active code page: 65001 Logging system failed to initialize using configuration from 'null' java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.model.processor.ImplicitModelHandler - Could not create component [timeBasedFileNamingAndTriggeringPolicy] of type [ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP] java.lang.ClassNotFoundException: ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP ERROR in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Filename pattern [work/syncUser2ThirdParty-%d{yyyy-MM-dd}.%i.log.zip] contains an integer token converter, i.e. %i, INCOMPATIBLE with this configuration. Please remove it. at org.springframework.boot.logging.logback.LogbackLoggingSystem.reportConfigurationErrorsIfNecessary(LogbackLoggingSystem.java:287) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:265) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:81) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:61) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:196) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:332) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:298) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:246) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:223) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:198) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:114) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:77) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) at com.hd.rcugrc.ui.ProjectApplication.main(ProjectApplication.java:111) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.WarLauncher.main(WarLauncher.java:53) Suppressed: java.lang.ClassNotFoundException: ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587) at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:97) at org.springframework.boot.loader.launch.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at ch.qos.logback.core.util.Loader.loadClass(Loader.java:132) at ch.qos.logback.core.model.processor.ImplicitModelHandler.doComplex(ImplicitModelHandler.java:134) at ch.qos.logback.core.model.processor.ImplicitModelHandler.handle(ImplicitModelHandler.java:94) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:241) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.traversalLoop(DefaultProcessor.java:90) at ch.qos.logback.core.model.processor.DefaultProcessor.process(DefaultProcessor.java:106) at ch.qos.logback.core.joran.GenericXMLConfigurator.processModel(GenericXMLConfigurator.java:222) at org.springframework.boot.logging.logback.SpringBootJoranConfigurator.processModel(SpringBootJoranConfigurator.java:133) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:178) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:123) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:66) at org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:296) at org.springframework.boot.logging.logback.LogbackLoggingSystem.lambda$loadConfiguration$1(LogbackLoggingSystem.java:258) at org.springframework.boot.logging.logback.LogbackLoggingSystem.withLoggingSuppressed(LogbackLoggingSystem.java:472) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:252) ... 46 more 2025-07-24T11:04:35.063+08:00 ERROR 50600 --- [xcoa] [ main] [ ] o.s.boot.SpringApplication : Application run failed

filetype

Logging system failed to initialize using configuration from 'null' java.lang.IllegalStateException: Could not initialize Logback logging from classpath:logback-spring.xml at org.springframework.boot.logging.logback.LogbackLoggingSystem.lambda$loadConfiguration$1(LogbackLoggingSystem.java:261) at org.springframework.boot.logging.logback.LogbackLoggingSystem.withLoggingSuppressed(LogbackLoggingSystem.java:472) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:252) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:81) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:61) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:196) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:332) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:298) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:246) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:223) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:198) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:114) at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:77) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) at com.hd.rcugrc.ui.ProjectApplication.main(ProjectApplication.java:111) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.WarLauncher.main(WarLauncher.java:53) Caused by: java.lang.IllegalStateException: The FileNamePattern option must be set before using TimeBasedRollingPolicy. See also https://logback.qos.ch/codes.html#tbr_fnp_not_set at ch.qos.logback.core.rolling.TimeBasedRollingPolicy.start(TimeBasedRollingPolicy.java:76) at ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy.start(SizeAndTimeBasedRollingPolicy.java:43) at ch.qos.logback.core.model.processor.ImplicitModelHandler.postHandleComplex(ImplicitModelHandler.java:207) at ch.qos.logback.core.model.processor.ImplicitModelHandler.postHandle(ImplicitModelHandler.java:186) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:257) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253) at ch.qos.logback.core.model.processor.DefaultProcessor.traversalLoop(DefaultProcessor.java:90) at ch.qos.logback.core.model.processor.DefaultProcessor.process(DefaultProcessor.java:106) at ch.qos.logback.core.joran.GenericXMLConfigurator.processModel(GenericXMLConfigurator.java:222) at org.springframework.boot.logging.logback.SpringBootJoranConfigurator.processModel(SpringBootJoranConfigurator.java:133) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:178) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:123) at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:66) at org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:296) at org.springframework.boot.logging.logback.LogbackLoggingSystem.lambda$loadConfiguration$1(LogbackLoggingSystem.java:258) ... 48 more

filetype

我是对xml文件不熟悉的人,现在请对日志xml配置详细分析,解释标签含义、配置含义,总体总结。代码如下:<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <springProperty scope="context" name="name" source="spring.application.name"/> <springProperty scope="context" name="version" source="project.version"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd} %d{HH:mm:ss.SSS} %X{env} %X{tid} [%thread] %-5level logger_name:%logger{36} - message:%msg%n</pattern> <charset>utf8</charset> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>log/${name}/Web.log.%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>60</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd} %d{HH:mm:ss.SSS} %X{env} %X{tid} [%thread] %-5level logger_name:%logger{36} - message:%msg%n</pattern> </layout> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>log/${name}\%d{yyyy-MM-dd}\%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> </appender> <appender name="ASYNC-STDOUT" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>1</discardingThreshold> <queueSize>2048</queueSize> <appender-ref ref="STDOUT"/> </appender> <appender name="ASYNC-FILE" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>1</discardingThreshold> <queueSize>2048</queueSize> <appender-ref ref="FILE"/> </appender> <logger name="org.mybatis"> <level value="TRACE"/> </logger> <root level="debug"> <appender-ref ref="ASYNC-STDOUT"/> <appender-ref ref="ASYNC-FILE"/> </root> </configuration>

ctllin
  • 粉丝: 47
上传资源 快速赚钱