根节点configuration
包含三个属性:
scan:设置为true时,如果配置文件发生改变,将会被重新加载,默认为true
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false
子节点contextName
用户区分不同应用程序,每个logger都关联,默认default,不常用
子节点property
用来定义变量值,有name和value两个属性值。可以使用 ${} 来使用变量。
子节点timestamp
获取时间戳字符串,有key和datePattern两个属性,datePattern设置将当前时间(解析配置文件的时间)转换为字符串的模式,遵循java.txt.SimpleDateFormat的格式
子节点appender
负责写日志的组件:name:appender名称;class:appender的全限定名
consoleAppender:
encoder:编码
pattern:日志输出格式
target:System.out(默认)和System.err
FileAppender:
file:文件名,可以是相对和绝对地址,不存在时自动创建
append:true追加写入,false覆盖写入,默认true
encoder:编码
pattern:日志输出格式
prudent:true安全但写入效率低,默认false
RollingFIleAppender:
file:文件名
append:true追加写入,false覆盖写入,默认true
rollingPolicy:发生滚动时,决定滚动的策略
class:ch.qos.logback.core.rolling.TimeBasedRollingPolicy 按时间切割日志文件
ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy 按文件大小切割日志文件
ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy 按时间和大小切割日志文件,注意中添加%i
子节点logger
name:指定约束的某一个包或具体类
level:打印级别,默认集成root
additivity:是否向上级传递,默认true
子节点root
也是一个logger元素,但是name确定,无additivity属性
level:打印级别,默认debug
示例
${CONSOLE_LOG_PATTERN} ${CONSOLE_FILTER_LEVEL} ${LOG_FILE_PATH}/run.log ${FILE_LOG_PATTERN} ${FILE_FILTER_LEVEL} ${LOG_FILE_CLEAN_HISTORY_ON_START:-false} ${LOG_FILE_PATH}/run-%d{yyyy-MM-dd}.%i.log.zip ${LOG_FILE_MAX_SIZE:-100MB} ${LOG_FILE_MAX_HISTORY:-30} ${LOG_FILE_TOTAL_SIZE_CAP:-1GB}
logback的filter详解:
filter是可以串联的
INFO ACCEPT DENY
INFO
org.codehaus.janino commons-compiler 3.0.12
org.codehaus.janino janino 3.0.12
return message.contains("There is no session with id"); DENY NEUTRAL
MYBATIS NEUTRAL DENY
名词解释:
deny:日志将立即被抛弃不在经过其他过滤器
meutral:有序列表里的下个过滤器接着处理日志;(该级别既不处理,也不抛弃,相当于没有任何处理,日志会被保存下来并在本appender被执行)
accept:日志会被立即处理,不再经过剩余过滤器