网站模块分类,怀柔区企业网站设计机构提供,推销广告,无锡做网站哪个公司好1. 概述
我们平时在写代码的时候#xff0c;除了IDE断点的形式以外#xff0c;还会用到System.out.println在控制台中输出相关的调试信息。本文介绍了在控制台中输出调试信息的另一种实现方式#xff0c;使用Logback日志框架可以在控制台中用自定义的格式#xff0c;输出更…1. 概述
我们平时在写代码的时候除了IDE断点的形式以外还会用到System.out.println在控制台中输出相关的调试信息。本文介绍了在控制台中输出调试信息的另一种实现方式使用Logback日志框架可以在控制台中用自定义的格式输出更详细的信息还能将日志信息保存在文件中以便后续分析。lombok的Slf4j注解省略了创建日志类的代码可以简化代码开发。本文使用Logback作为Slf4j日志框架的具体实现这也是SpringBoot中默认集成的日志系统相比Log4j日志框架具有更好地性能和更简化的配置。
1.1 示意图
使用日志框架和直接输出的结果对比
2. 代码
引入依赖
!--Lombok--
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversionRELEASE/versionscopecompile/scope
/dependency
!--日志依赖--
dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.36/version
/dependency
dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.11/version
/dependency编写配置文件logback.xml放在resources目录下
?xml version1.0 encodingUTF-8?
!-- Logback 配置文件 --
configuration!-- 控制台输出 appender --appender nameCONSOLE classch.qos.logback.core.ConsoleAppender!-- 日志格式编码器 --encoder!-- 控制台输出格式日期线程日志级别 --pattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %5level %logger - %msg%n/pattern/encoder/appender!-- 文件输出 appender --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender!-- 日志格式编码器 --encoder!-- 文件输出格式日期线程日志级别日志记录器的名称和当前类的全限定类名一般相同输出信息 --pattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern!-- 字符编码 --charsetutf-8/charset/encoder!-- 日志文件路径 --filelog/output-logback.log/file!-- 日志滚动策略 --rollingPolicy classch.qos.logback.core.rolling.FixedWindowRollingPolicy!-- 日志文件名模式 --fileNamePatternlog/output.log.%i/fileNamePattern/rollingPolicy!-- 触发策略基于文件大小 --triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicy!-- 最大日志文件大小 --MaxFileSize100MB/MaxFileSize/triggeringPolicy/appender!-- 根日志级别设置为 DEBUG --root levelDEBUG!-- 引用控制台输出 appender可选 --appender-ref refCONSOLE /!-- 引用文件输出 appender可选 --appender-ref refFILE //root/configuration
注意事项
root 标签中的两种输出形式都是可选的你可以只在控制台输出System.out.println和INFO级别差不多日志输出级别由简略到详细依次为ERRORWARNINFODEBUGTRACE一定要注意你在配置中的级别一定要高于等于你在代码中使用的级别例如你配置中写的是INFO代码中写的是DEBUG那么不会输出日志。示例代码结果见1.1中示意图代码中的log对象是被Slf4j注解初始化的
import lombok.extern.slf4j.Slf4j;Slf4j
public class Test {public static void main(String[] args) {System.out.println(hello);log.debug(hello); // 注意这里的日志级别就是那个debug一定要低于等于配置中的级别}
}