新开传奇网站发布网单职业,安徽服饰网站建设,小红书推广价格,搜索引擎网站提交目录 #xff08;一#xff09;配置文件的加载
#xff08;二#xff09;使用介绍
1、configuration#xff1a;配置文件的跟元素
2、contextName#xff1a;设置日志上下文名称
3、contextListener#xff1a;设置上下文监听事件
4、property/variable/substituti…目录 一配置文件的加载
二使用介绍
1、configuration配置文件的跟元素
2、contextName设置日志上下文名称
3、contextListener设置上下文监听事件
4、property/variable/substitutionProperty设置变量
5、conversionRule自定义关键字的转换规则
6、statusListener配置日志的状态监听器
7、appender日志事件的输出组件
8、logger日志记录实例
9、include内嵌配置文件 一配置文件的加载
1设置系统变量logback.configurationFile指定配置文件路径
启动时加入启动参数-Dlogback.configurationFile/path/log/logback.xml
2查找resource下的logback-test.xml这个通常是单元测试时使用配置在test/resources下
3查找resource下的logback.xml
二使用介绍
先给出一份比较详细的配置文件注意此配置文件并不一定合理因为很多标签属性是为了展示其用法而加实际的配置文件需要根据项目所需设置然后再对其中标签元素一一介绍
configuration scantrue scanPeriod1 minute debugtrue!--turboFilter class/--!-- Appenders --!--contextNamemallLogSystem/contextName--!--contextListener class/--property namelogPath valuelogs scopeSYSTEM/property nameappName valuemallSystem/!--property resourcelog.properties/--appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appenderappender nameASYNC classch.qos.logback.classic.AsyncAppender!-- 设置是否在启动时触发之前丢弃的事件 --discardingThreshold0/discardingThreshold!-- 设置这个appender的neveQueueSize --queueSize512/queueSize!-- 添加真实的appender --appender-ref refROLLING//appenderappender nameROLLING classch.qos.logback.core.rolling.RollingFileAppenderfile${logPath}/${appName}.log/filerollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${logPath}/${appName}.%d{yyyy-MM-dd}.%i.log/fileNamePatternmaxHistory30/maxHistory !-- 保留最近30天的日志文件 --MaxFileSize10MB/MaxFileSize/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appenderappender nameimpossible classch.qos.logback.core.rolling.RollingFileAppenderfile${logPath}/${impossibleName}.log/filerollingPolicy classch.qos.logback.core.rolling.FixedWindowRollingPolicyfileNamePattern${logPath}/${impossibleName}.%i.log.zip/fileNamePatternminIndex1/minIndexmaxIndex3/maxIndex/rollingPolicytriggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicymaxFileSize16kb/maxFileSize/triggeringPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} %msg%n/pattern/encoderfilter classcom.mall.common.log.LevelRangeFilterminLevelWARN/minLevelmaxLevelERROR/maxLevelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appenderlogger nameimpossible additivityfalseappender-ref refimpossible//logger!-- Root Logger --root levelInfoappender-ref refCONSOLE/appender-ref refASYNC//root
/configuration
1、configuration配置文件的跟元素 属性介绍 scantrue表示会添加一个定时任务检查配置文件是否改变改变则重新加载和scanPeriod配合使用。默认为false. scanPeriod扫描周期支持Duration字符串转换300 millisecond1 minute60 second, 1 hour1 day。空格将数量和单位分割开。 debugtrue表示开启日志初始化时的内部日志打印可以看到日志初始化的一些输出日志。默认是关闭的日志初始化有问题可以将此项打开方便看初始化过程。 packagingData 如果设置为true那么设置context中对应的属性为true。此属性控制有异常抛出时异常堆栈是否包含jar包以及对应版本号默认为false
2、contextName设置日志上下文名称
3、contextListener设置上下文监听事件 可以监听上下文生命周期的事件属性class设置监听器的类。监听事件包含onStart、onReset、onStop、onLevelChange
4、property/variable/substitutionProperty设置变量 这3个标签是同一个历史原因造成可以定义key-value属性值 scope作用域有3种范围LOCAL, CONTEXT, SYSTEM。变量的查找顺序是本地然后是CONTEXT然后才是SYSTEM。默认是LOCAL。注意SYSTEM实际会设置到系统变量中所以需要谨慎。 namekey值 valuekey对应的value。 file支持批量配置文件导入值为文件绝对路径 resource配置的是资源文件相对于resources路径如property resourcelog.properties/ name和value是成对出现的并且和file、resource互斥即一个property只配置3者其中之一即可
5、conversionRule自定义关键字的转换规则 只需要配置class属性对应的是转换器类。详情可参见《logback之自定义pattern使用的转换器》
6、statusListener配置日志的状态监听器 也只需要配置监听器类只需要实现addStatusEvent即可然后结合StatusPrinter可以打印状态事件在排错方面很有用。
7、appender日志事件的输出组件 name定义一个名称 class对应的appender类 通常有4种appender:ConsoleAppenderFileAppenderRollingFileAppenderAsyncAppender。除了AsyncAppender需要引用实际的appender以外其余appender都需要定义encoder以设置日志输出格式 encoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder pattern详细介绍可参加《logback之pattern详解以及源码分析》同时还可以添加过滤器如下 filter classch.qos.logback.classic.filter.LevelFilterLevelINFO/LevelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter 过滤器可自定义详情可参见另一篇《logback之自定义过滤器》 1 ConsoleAppender输出到控制台示例如下 appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender 2FileAppender输出到固定的日志文件 appender namefileAppender classch.qos.logback.core.FileAppenderfile${logPath}/${appName}_fix.log/fileappendtrue/appendprudentfalse/prudentBufferSize1024/BufferSizeencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender file设置文件名称支持变量绑定 append是否将日志追加到文件现有内容的末尾默认为true。 prudent:是否prudent模式默认为false。此项开启需谨慎用于多个进程间的共享文件写入会加文件锁所以可能会有性能影响。如果文件每秒只有30条日志性能影响不大但如果每秒超过100以上那么就可能会有性能问题了 BufferSize缓存区大小。FileAppender用BufferedOutputStream实际输出日志所以可以设置缓存区大小默认8096。 3RollingFileAppender也是输出到日志文件继承FileAppender但可以配置滚动策略实现日志滚动这个在实际生产中用的比较大。如下示例是每天滚动一次文件最多保留30天的日志。同时还按文件大小滚动如果文件超过10M也会滚动 appender nameROLLING classch.qos.logback.core.rolling.RollingFileAppenderfile${logPath}/${appName}.log/filerollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${logPath}/${appName}.%d{yyyy-MM-dd}.%i.log/fileNamePatternmaxHistory30/maxHistory !-- 保留最近30天的日志文件 --MaxFileSize10MB/MaxFileSize/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender 继承自FileAppender所以FileAppender可以设置的属性它都可以设置。另外增加了RollingPolicy和TriggeringPolicy。设置滚动策略以及滚动触发的策略。SizeAndTimeBasedRollingPolicy继承自TimeBasedRollingPolicy既是RollingPolicy也是TriggeringPolicy。所以不用额外设置TriggeringPolicy。 滚动策略和触发策略还可以有如下搭配 按文件大小滚动最多3个滚动文件超过3个会把旧的删掉。触发条件按文件大小下面配置的是16kb。 rollingPolicy classch.qos.logback.core.rolling.FixedWindowRollingPolicyfileNamePattern${logPath}/${impossibleName}.%i.log.zip/fileNamePatternminIndex1/minIndexmaxIndex3/maxIndex/rollingPolicytriggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicymaxFileSize16kb/maxFileSize/triggeringPolicy 按日期滚动每天滚动一次滚动的频率是根据所配置${yyyy-MM-dd}文件日期格式定的如果配置按月那么就是${yyyy-MM} appender nameROLLING classch.qos.logback.core.rolling.RollingFileAppenderfilelogs/logback.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlogs/logback.%d{yyyy-MM-dd}.log/fileNamePatternmaxHistory30/maxHistory !-- 保留最近30天的日志文件 --/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender 4AsyncAppender异步日志输出需要appender-ref指定实际的appender组件。 appender nameASYNC classch.qos.logback.classic.AsyncAppender!-- 如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --discardingThreshold20/discardingThreshold!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --queueSize512/queueSize!-- 队列满了不阻塞调用者--neverBlocktrue/neverBlock!-- 添加真实的appender,最多只能添加一个 --appender-ref refROLLING//appender AsyncAppender是为了不阻塞主线程而使用的日志不会直接输出而是放到阻塞队列中。它会开启一个单独的后台线程从ArrayBlockingQueue中日志获取再调用实际的appender输出日志。 discardingThreshold设置队列容量剩余多少时直接丢弃info包含info级别以下的日志的阈值。日志容量达到阈值说明此时日志负载是比较重的这时保证重要级别的日志输出。默认为-1表示不限制。 queueSize队列的容量 neverBlock设置日志事件添加到队列中的方式如果是neverBlock那么使用offer添加日志事件那么在日志容量满的情况下是不会阻塞的但如果是false那么使用put添加就会阻塞主线程进入等待了。
8、logger日志记录实例 标签属性 name:logger的名称有层级关系。如com.example.ClassInfo那么它父级logger是com.example-》com-》root。所有的logger的根logger都是root。 level定义日志级别如果没有定义则继承父级logger的日志级别。 additivity定义日志是否传递到父级如果为true的话那么除了会输出到当前logger的appender以外还会传递给父级的appender。那么一条日志记录会输出到多个日志文件中。默认为true。 内嵌标签 appender-ref引用的appender logger nameimpossible additivityfalseappender-ref refimpossible/appender-ref reffileAppender//logger
9、include内嵌配置文件 标签属性 file定义内嵌文件的绝对路径 urlurl形式引入内嵌文件 resource相对于resources路径引入内嵌文件 optional是否输出解析内嵌配置文件过程中的状态日志默认是false。 file、url、resource只能配置其中一个。内嵌文件必须以included开头以included结尾。 如定义一个logProperty.xml
includedproperty namelogPath valuelogs/property nameappName valuemallSystem/
/included 然后在主配置文件中引入 include resourceslogProperty.xml/