沧州网站改版优化,软件app开发制作,黑龙江省建筑信息平台,文化传媒公司起名字大全免费logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件#xff0c;通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。
Logback 提供了丰富的配置选项#xff0c;可以满足各种不同的日志需求。需要根据具体情况进行配置。
项目创建#xff0…logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。
Logback 提供了丰富的配置选项可以满足各种不同的日志需求。需要根据具体情况进行配置。
项目创建及其springboot系列相关知识点详见springboot系列 springboot系列最近持续更新中如需要请关注
如果你觉得我分享的内容或者我的努力对你有帮助或者你只是想表达对我的支持和鼓励请考虑给我点赞、评论、收藏。您的鼓励是我前进的动力让我感到非常感激。 文章目录 1 logback-config.xml详情1.1 多环境配置【不同的环境配置文件在一起】 1 logback-config.xml详情
1.1 多环境配置【不同的环境配置文件在一起】
?xml version1.0 encodingUTF-8?
!-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL如果设置为WARN则低于WARN的信息都不会输出 --
!-- scan:当此属性设置为true时配置文档如果发生改变将会被重新加载默认值为true --
!-- scanPeriod:设置监测配置文档是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 --
!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 --
configuration scantrue scanPeriod10 seconds!-- 日志名称默认从取 spring.application.name --springProperty namecontextName sourcespring.application.name/!-- 运行环境 --springProperty nameenvName sourcespring.profiles.active/!-- property指定变量name的值是变量的名称value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后可以使“${}”来使用变量 --!-- 日志存放目录使用项目名这样在多服务中可以根据服务名分目录存储日志 --property namelog.path valuelogs/${contextName}/logs/!--0. 日志格式和颜色渲染 --!-- 彩色日志依赖的渲染类 --conversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter/conversionRule conversionWordwexconverterClassorg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter/conversionRule conversionWordwExconverterClassorg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter/!--控制台彩色日志格式日志解读%clr([${contextName},${envName:-dev}]){yellow}输出项目名称和项目使用环境黄色%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint}输出日期格式yyyy-MM-dd HH:mm:ss.SSS%clr(%5p)输出日志格式。并对齐5位。如果是INFO、WARN这种四个字符的默认在最左边加入一个空格info为蓝色warn为浅红error为加粗红debug为黑色%clr(${PID:- }){magenta}输出PID品红色。ps${PID:- } 这个 ${} 使用方式表示有PID则显示PID没有则显示-[%15.15t]输出线程名称。如果记录的线程字符长度小于15(第一个)则用空格在左侧补齐,如果字符长度大于15(第二个),则从开头开始截断多余的字符%clr(%-50.50(%logger{50})){cyan}%-50.50()如果记录的logger字符长度小于50(第一个)则用空格在右侧补齐,如果字符长度大于50(第二个),则从开头开始截断多余的字符%logger{50}输出日志名字 一般采用日志所在类名或者包名做日志名{cyan}输出颜色青色%msg%n日志输出内容换行%n--property nameconsole.log.patternvalue%clr([${contextName},${envName:-dev}]){yellow} %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} [%15.15t] %clr(%-50.50(%logger{50})){cyan} : %msg%n/!-- 文件日志格式。ps:日志文件中没有设置颜色,否则颜色部分会有ESC[0:39em等乱码- --property namelog.patternvalue[${contextName},${envName:-dev}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%15.15t] %-50.50(%logger{50}) : %msg%n/!--1. 输出到控制台--appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderPattern${console.log.pattern}/Pattern!-- 设置字符集 --charsetUTF-8/charset/encodertargetSystem.out/target/appender!--2. 输出到文档--!-- 2.0 输入全部level日志 视项目需求而定可删除--appender nameallLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/all.log/file!--日志输出格式--encoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder!--历史日志归档策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名分了目录的话要加 aux 不然日志文件不能按时生成%i表示序号在这里不能少因为如果当一个文件到了指定大小后那就要按照%i来生成顺序下的另一个文件 --!--保存日志策略 根据 %d{yyyy-MM-dd} 进行保存 %d{yyyy-MM-dd}:按天进行保存 %d{yyyy-MM-dd HH}:按小时进行保存--fileNamePattern${log.path}/%d{yyyy-MM, aux}/all/all.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize100MB/maxFileSize!-- timeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP --!-- maxFileSize100MB/maxFileSize --!-- /timeBasedFileNamingAndTriggeringPolicy --!--日志文件保留天数--maxHistory7/maxHistory!--用来指定日志文件的上限大小到了这个值就会删除旧的日志--totalSizeCap10GB/totalSizeCap/rollingPolicy/appender!-- 2.1 level为 DEBUG 日志时间滚动输出 --appender namedebugLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/debug.log/file!--日志输出格式--encoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder!--历史日志归档策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名分了目录的话要加 aux 不然日志文件不能按时生成%i表示序号在这里不能少因为如果当一个文件到了指定大小后那就要按照%i来生成顺序下的另一个文件 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/debug/debug.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize100MB/maxFileSize!--日志文件保留天数--maxHistory7/maxHistory!--用来指定日志文件的上限大小到了这个值就会删除旧的日志--totalSizeCap10GB/totalSizeCap/rollingPolicy!-- 此日志文档只记录debug级别的 level过滤器--filter classch.qos.logback.classic.filter.LevelFilterleveldebug/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 2.2 level为 INFO 日志时间滚动输出 --appender nameinfoLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/info.log/file!--日志输出格式--encoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder!--历史日志归档策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名分了目录的话要加 aux 不然日志文件不能按时生成%i表示序号在这里不能少因为如果当一个文件到了指定大小后那就要按照%i来生成顺序下的另一个文件 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/info/info.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize100MB/maxFileSize!--日志文件保留天数--maxHistory7/maxHistory!--用来指定日志文件的上限大小到了这个值就会删除旧的日志--totalSizeCap10GB/totalSizeCap/rollingPolicy!-- 此日志文档只记录info级别的 level过滤器--filter classch.qos.logback.classic.filter.LevelFilterlevelinfo/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 2.3 level为 WARN 日志时间滚动输出 --appender namewarnLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/warn.log/file!--日志输出格式--encoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder!--历史日志归档策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名分了目录的话要加 aux 不然日志文件不能按时生成%i表示序号在这里不能少因为如果当一个文件到了指定大小后那就要按照%i来生成顺序下的另一个文件 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/warn/warn.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize100MB/maxFileSize!--日志文件保留天数--maxHistory7/maxHistory!--用来指定日志文件的上限大小到了这个值就会删除旧的日志--totalSizeCap10GB/totalSizeCap/rollingPolicy!-- 此日志文档只记录warn级别的 level过滤器--filter classch.qos.logback.classic.filter.LevelFilterlevelwarn/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 2.4 level为 ERROR 日志时间滚动输出 --appender nameerrorLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/error.log/file!--日志输出格式--encoderpattern${log.pattern}/patterncharsetUTF-8/charset/encoder!--历史日志归档策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名分了目录的话要加 aux 不然日志文件不能按时生成%i表示序号在这里不能少因为如果当一个文件到了指定大小后那就要按照%i来生成顺序下的另一个文件 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/error/error.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize100MB/maxFileSize!--日志文件保留天数--maxHistory7/maxHistory!--用来指定日志文件的上限大小到了这个值就会删除旧的日志--totalSizeCap10GB/totalSizeCap/rollingPolicy!-- 此日志文档只记录error级别的 level过滤器--filter classch.qos.logback.classic.filter.LevelFilterlevelerror/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 文件 异步日志(async) --appender nameasyncAppLog classch.qos.logback.classic.AsyncAppenderimmediateFlushfalse neverBlocktrue!-- 0不丢失日志.20如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --discardingThreshold0/discardingThreshold!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --queueSize1024/queueSize!-- 队列满了不阻塞调用者--neverBlocktrue/neverBlock!-- 添加附加的appender,最多只能添加一个 --appender-ref refallLog//appender!--由于队列中还会有没有打印的日志内容因此需要等待一段时间等待队列处理完毕。单位是ms。如果队列较大队列内容较多可以将此值设置的较大。如果超过此时间队列中的日志还没有处理完毕则队列中的日志将抛弃--shutdownHook classch.qos.logback.core.hook.DelayingShutdownHookdelay2000/delay/shutdownHook!--logger用来设置某一个包或者具体的某一个类的日志打印级别、 以及指定appender。logger仅有一个name属性 一个可选的level和一个可选的addtivity属性。name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF还有一个特殊值INHERITED或者同义词NULL代表强制执行上级的级别。如果未设置此属性那么当前logger将会继承上级的级别。addtivity:是否向上级logger传递打印信息。默认是true。logger nameorg.springframework.web levelinfo/logger nameorg.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor levelINFO/--!--root节点是必选节点用来指定最基础的日志输出级别只有一个level属性level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF不能设置为INHERITED或者同义词NULL。默认是DEBUG可以包含零个或多个元素标识这个appender将会添加到这个logger。--!-- 4. 最终的策略 可根据环境分别制定不同的日志策略。注意这里的 allLog 没在root中声明在上面的 asyncAppLog 声明异步处理--!-- 4.1 开发环境:打印控制台可把其他打印到文件的appender-ref注释 --springProfile namedevroot levelinfoappender-ref refCONSOLE/appender-ref refdebugLog/appender-ref refinfoLog/appender-ref refwarnLog/appender-ref referrorLog/appender-ref refasyncAppLog//root/springProfile!-- 4.2 生产环境:输出到文档springProfile nameproroot levelinfoappender-ref refCONSOLE/appender-ref refdebugLog/appender-ref refinfoLog/appender-ref refwarnLog/appender-ref referrorLog/appender-ref refasyncAppLog//root/springProfile --/configuration注 上面配置不指定“Profile”时日志没办法输出需要通过如下方式指定 另外多环境配置可以分开配置 pom配置多环境 !-- 多环境配置【开始】 --profiles!-- 开发环境环境 --profileiddev/idpropertiespackage.environmentdev/package.environment/properties!-- 是否默认 true表示默认--activationactiveByDefaulttrue/activeByDefault/activation/profile!-- 测试环境 --profileidtest/idpropertiespackage.environmenttest/package.environment/properties/profileprofile!-- 生产环境 --idprod/idpropertiespackage.environmentprod/package.environment/properties/profile/profiles!-- 多环境配置【结束】 --1.2 单环境部署
?xml version1.0 encodingUTF-8? !-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL --
!-- 日志输出规则 根据当前ROOT 级别日志输出时级别高于root默认的级别时 会输出 --
!-- 以下 每个配置的 filter 是过滤掉输出文件里面会出现高级别文件依然出现低级别的日志信息通过filter 过滤只记录本级别的日志-- !-- 属性描述 scan性设置为true时配置文件如果发生改变将会被重新加载默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 --
configuration scantrue scanPeriod60 seconds debugfalse !-- 定义日志文件 输入位置 -- property namelog_dir value/logs/ev_cmdb / !-- 日志最大的历史 30天 -- property namemaxHistory value30/ !-- ConsoleAppender 控制台输出日志 -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender !-- 对日志进行格式化 -- encoder pattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n/pattern /encoder /appender !-- ERROR级别日志 -- !-- 滚动记录文件先将日志记录到指定文件当符合某个条件时将日志记录到其他文件 RollingFileAppender-- appender nameERROR classch.qos.logback.core.rolling.RollingFileAppender !-- 过滤器只记录WARN级别的日志 -- filter classch.qos.logback.classic.filter.LevelFilter levelERROR/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter !-- 最常用的滚动策略它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -- rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !--日志输出位置 可相对、和绝对路径 -- fileNamePattern${log_dir}/%d{yyyy-MM-dd}/error-log.log/fileNamePattern !-- 可选节点控制保留的归档文件的最大数量超出数量就删除旧文件假设设置每个月滚动且maxHistory是6 则只保存最近6个月的文件删除之前的旧文件。注意删除旧文件是那些为了归档而创建的目录也会被删除-- maxHistory${maxHistory}/maxHistory /rollingPolicy !-- 按照固定窗口模式生成日志文件当文件大于20MB时生成新的日志文件。窗口大小是1到3当保存了3个归档文件后将覆盖最早的日志。 rollingPolicy classch.qos.logback.core.rolling.FixedWindowRollingPolicy fileNamePattern${log_dir}/%d{yyyy-MM-dd}/.log.zip/fileNamePattern minIndex1/minIndex maxIndex3/maxIndex /rollingPolicy -- !-- 查看当前活动文件的大小如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicy maxFileSize5MB/maxFileSize /triggeringPolicy -- encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern /encoder /appender !-- WARN级别日志 appender -- appender nameWARN classch.qos.logback.core.rolling.RollingFileAppender !-- 过滤器只记录WARN级别的日志 -- filter classch.qos.logback.classic.filter.LevelFilter levelWARN/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 按天回滚 daily -- fileNamePattern${log_dir}/%d{yyyy-MM-dd}/warn-log.log /fileNamePattern !-- 日志最大的历史 60天 -- maxHistory${maxHistory}/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern /encoder /appender !-- INFO级别日志 appender -- appender nameINFO classch.qos.logback.core.rolling.RollingFileAppender !-- 过滤器只记录INFO级别的日志 -- filter classch.qos.logback.classic.filter.LevelFilter levelINFO/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 按天回滚 daily -- fileNamePattern${log_dir}/%d{yyyy-MM-dd}/info-log.log /fileNamePattern !-- 日志最大的历史 60天 -- maxHistory${maxHistory}/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern /encoder /appender !-- DEBUG级别日志 appender -- appender nameDEBUG classch.qos.logback.core.rolling.RollingFileAppender !-- 过滤器只记录DEBUG级别的日志 -- filter classch.qos.logback.classic.filter.LevelFilter levelDEBUG/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 按天回滚 daily -- fileNamePattern${log_dir}/%d{yyyy-MM-dd}/debug-log.log /fileNamePattern !-- 日志最大的历史 60天 -- maxHistory${maxHistory}/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern /encoder /appender !-- TRACE级别日志 appender -- appender nameTRACE classch.qos.logback.core.rolling.RollingFileAppender !-- 过滤器只记录ERROR级别的日志 -- filter classch.qos.logback.classic.filter.LevelFilter levelTRACE/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 按天回滚 daily -- fileNamePattern${log_dir}/%d{yyyy-MM-dd}/trace-log.log /fileNamePattern !-- 日志最大的历史 60天 -- maxHistory${maxHistory}/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern /encoder /appender logger namejava.sql.PreparedStatement valueDEBUG / logger namejava.sql.Connection valueDEBUG / logger namejava.sql.Statement valueDEBUG / logger namecom.ibatis valueDEBUG / logger namecom.ibatis.common.jdbc.SimpleDataSource valueDEBUG / logger namecom.ibatis.common.jdbc.ScriptRunner levelDEBUG/ logger namecom.ibatis.sqlmap.engine.impl.SqlMapClientDelegate valueDEBUG / !-- root级别 DEBUG -- root leveldebug !-- 控制台输出 -- appender-ref refSTDOUT / !-- 文件输出 -- appender-ref refERROR / appender-ref refINFO / appender-ref refWARN / appender-ref refDEBUG / appender-ref refTRACE / /root
/configuration 2 开发案例
?xml version1.0 encodingUTF-8?
configuration scantrue scanPeriod10 secondsappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filterencoder classcom.huawei.titan.security.sdk.runlog.encoder.SecurityLayoutEncoderpattern%date [%thread] %highlight(%-5level) [%magenta(%logger{500})] - %msg%n/pattern/encoder/appenderappender nameLOG_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filterFile/opt/titan/logs/log/algorithmscheduleservice.log/FilerollingPolicy classcom.huawei.titan.security.sdk.runlog.rolling.SecuritySizeAndTimeBasedRollingPolicyfileNamePattern/opt/titan/logs/log/algorithmscheduleservice-%d{yyyyMMdd}.%i.log.zip/fileNamePatternmaxFileSize10MB/maxFileSizemaxHistory10/maxHistorytotalSizeCap200MB/totalSizeCap/rollingPolicyencoder classcom.huawei.titan.security.sdk.runlog.encoder.SecurityLayoutEncoderpattern%date [%thread] %highlight(%-5level) [%magenta(%logger{500})] - %msg%n/pattern/encoder/appender!-- 开发本地环境. --springProfile namelocallogger namecom.huawei.titan.algorithmscheduleservice additivityfalse levelDEBUGappender-ref refSTDOUT/appender-ref refLOG_FILE//loggerlogger namecom.huawei.security.validator.log.WSFValidatorLog levelOFFappender-ref refLOG_FILE//loggerroot levelINFOappender-ref refSTDOUT/appender-ref refLOG_FILE//root/springProfile!-- 开发验证环境和测试环境 --springProfile namedev,test,securitylogger namecom.huawei.titan.algorithmscheduleservice additivityfalse levelDEBUGappender-ref refLOG_FILE//loggerroot levelINFOappender-ref refLOG_FILE//root/springProfile!-- 集成测试环境 --springProfile namesit,proroot levelINFOappender-ref refLOG_FILE//rootlogger namecom.xxxx levelOFFappender-ref refLOG_FILE//logger/springProfile!-- 修改参数校验的日志输出级别,大量的无用校验日志影响问题定位 --logger namecom.xxxx levelERROR additivitytrue/logger!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --root levelDEBUGappender-ref refSTDOUT//root/configuration