We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
logback 根标签。
scan:当配置文件如果发生改变时,将被重新加载,默认为 true。
scanPeriod
设置检测配置文件是否有修改的时间间隔,默认单位为毫秒,默认时间间隔为 1 分钟,只有 scan 为 true 时,该属性生效
debug
此属性为 true 时,将打印 logback 内部日志信息,实时查看 logback 运行状态。默认为 false
configuration 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <!-- 其他配置省略--> </configuration>
每个 logger 都关联到 logger 上下文,默认值为 default。但可使用 <contextName> 设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
default
<contextName>
contextName 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <contextName>myAppName</contextName> <!-- 其他配置省略--> </configuration>
用来定义变量值的标签。
可以使用 ${} 使用变量。
${}
property 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <property name="APP_NAME" value="myAppName"/> <contextName>${APP_NAME}</contextName> <!-- 其他配置省略--> </configuration>
获取时间戳字符串。
timestamp
java.txt.SimpleDateFormat
timestamp 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <timestamp name="bySecond" datePattern="yyyyMMdd'T'HHmmss"/> <contextName>${bySecond}</contextName> <!-- 其他配置省略--> </configuration>
用来设置某一个包或者具体的某一个类的日志打印级别,以及指定 <appender>。
<appender>
name:用来指受此 loger 约束的某一个包或者具体的某一个类。
loger
level:用来设置打印级别,大小写无关 TRACE、DEBUG、INFO、WARN、ERROR、ALL 和 OFF
TRACE
DEBUG
INFO
WARN
ERROR
ALL
OFF
还有个特殊值 INHERITED 或者同义词 NULL,代表强制执行上级的级别。如果未设置此属性,则当前 loger 会继承上级的级别。
addtivity:是否向上级 loger 传递打印信息 默认为 true。
loger 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></appender> <logers> <loger name="logback.LogbackDemo" level="DEBUG" addtivity="false"> <appender-ref ref="STDOUT" /> </loger> </logers> <!-- 其他配置省略--> </configuration>
也是 <loger> 元素,但是它是根loger,只有 level 属性,默认值为 DEBUG。
<loger>
level
root 的配置
<?xml version="1.0" encoding="utf-8" ?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></appender> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> <!-- 其他配置省略--> </configuration>
configuration 的子节点,主要负责写日志组件;
name:指定 appender 日志组件名称。
appender
class:指定 appender 的全限定名。
ConsoleAppender 表示控制台输出
<encoder> <pattern>%-5level | %date{yyyy-MM-dd HH:mm:ss} | %thread | %logger | %msg%n</pattern> </encoder>
FileAppender 将日志添加到文件中
true
FileAppender
false
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>log/logname.log</file> <append>true</append> <encoder> <pattern>%-5level | %date{yyyy-MM-dd HH:mm:ss} | %thread | %logger | %msg%n</pattern> </encoder> <prudent>false</prudent> </appender>
RollingFileAppender 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。
rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。
RollingFileAppender
triggeringPolicy:告知 RollingFileAppender 合适激活滚动。
prudent:当为 true 时,不支持 FixedWindowRollingPolicy。支持 TimeBasedRollingPolicy,但是有两个限制,1 不支持也不允许文件压缩,2 不能设置 file 属性,必须留空
FixedWindowRollingPolicy
TimeBasedRollingPolicy
file
最常用的滚动策略,根据时间里制定滚动策略,既负责滚动也负责触发滚动。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>log/log.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender>
根据固定窗口算法重命名文件的滚动策略。
log%i.log
log1.log
log2.log
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <minIndex>1</minIndex> <maxIndex>2</maxIndex> <fileNamePattern>log/log%i.log</fileNamePattern> </rollingPolicy> </appender>
SizeBasedTriggeringPolicy
查看当前活动文件的大小,如果超出指定大小会告知
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>test.log</file> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> </triggeringPolicy> </appender>
yyyy-MM-dd HH:mm:ss.SSS
格式修饰符,与转换符共同使用:可选的格式修饰符位于 “%” 和转换符之间。
过滤器,执行一个过滤器会有返回枚举值
DENY:日志将立即被抛弃不再经过其他过滤器;
NEUTRAL:有序列表里的下个过滤器接着处理日志;
ACCEPT:日志将被立即处理,不再经过过滤器;
LevelFilter
级别过滤器,根据日志界别进行过滤。如果日志等级等于配置级别,过滤器会根据 onMatch 和 onMismatch 接收或拒绝日志。
onMatch
onMismatch
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern> %-4relative [%thread] %-5level %logger{30} - %msg%n </pattern> </encoder> </appender>
ThresholdFilter
临界值过滤器,过滤掉低于指定临界值得日志。当日志级别等于或高于临界时,过滤器返回 NEUTRAL;当日志级别低于临界时,日志会被拒绝。
NEUTRAL
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!-- 过滤掉 TRACE 和 DEBUG 级别的日志--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern> %-4relative [%thread] %-5level %logger{30} - %msg%n </pattern> </encoder> </appender>
logback
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!-- 上下文名称 --> <property name="log.context.name" value="MyApp" /> <!-- log编码 --> <property name="log.charset" value="UTF-8" /> <!-- log文件最大历史 --> <property name="log.history.max" value="30" /> <!-- log文件输出路径, 相对路径LOG在Tomcat 8.5\bin\LOG下, 绝对路径/LOG在D:\LOG下 --> <!-- 推荐绝对路径 --> <property name="log.path" value="LOG" /> <!-- Log4j: [S][%d{yyyyMMdd HH:mm:ss}][%-5p][%C:%L] - %m%n --> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" /> <property name="log.pattern.short" value="%date{yyyyMMdd HH:mm:ss.SSS}-%msg%n" /> <!-- 设置上下文名称 --> <contextName>${log.context.name}</contextName> <!-- 输出到控制台 --> <!-- appender用于输出log日志, name是appender的唯一标识, class指定实现类 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder是编码器, charset指定编码格式 --> <encoder charset="${log.charset}"> <!-- 输出日志的格式, 在上面有提到 --> <pattern>${log.pattern}</pattern> </encoder> </appender> <appender name="STDOUT_SHORT" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="${log.charset}"> <pattern>${log.pattern.short}</pattern> </encoder> </appender> <!-- 输出到文件 --> <!-- ERROR级别日志 --> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender--> <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录ERROR级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <!-- 匹配则处理这个日志, 不经过其他过滤器 --> <onMatch>ACCEPT</onMatch> <!-- 不匹配则抛弃这个日志 --> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log.path}/error/log.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${log.history.max}</maxHistory> </rollingPolicy> <encoder charset="${log.charset}"> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- WARN级别日志 appender --> <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录WARN级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <!-- 匹配则处理这个日志, 不经过其他过滤器 --> <onMatch>ACCEPT</onMatch> <!-- 不匹配则抛弃这个日志 --> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log.path}/warn/log.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${log.history.max}</maxHistory> </rollingPolicy> <encoder charset="${log.charset}"> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- INFO级别日志 appender --> <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录INFO级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <!-- 匹配则处理这个日志, 不经过其他过滤器 --> <onMatch>ACCEPT</onMatch> <!-- 不匹配则抛弃这个日志 --> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log.path}/info/log.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${log.history.max}</maxHistory> </rollingPolicy> <encoder charset="${log.charset}"> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- DEBUG级别日志 appender --> <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录DEBUG级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <!-- 匹配则处理这个日志, 不经过其他过滤器 --> <onMatch>ACCEPT</onMatch> <!-- 不匹配则抛弃这个日志 --> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log.path}/debug/log.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${log.history.max}</maxHistory> </rollingPolicy> <encoder charset="${log.charset}"> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- TRACE级别日志 appender --> <appender name="FILE_TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录TRACE级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>TRACE</level> <!-- 匹配则处理这个日志, 不经过其他过滤器 --> <onMatch>ACCEPT</onMatch> <!-- 不匹配则抛弃这个日志 --> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log.path}/trace/log.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${log.history.max}</maxHistory> </rollingPolicy> <encoder charset="${log.charset}"> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- 项目日志级别 --> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <logger name="com.ahao.project" level="INFO"/> <!-- root级别 INFO --> <root level="INFO"> <!-- 控制台输出 --> <appender-ref ref="STDOUT" /> <!-- 文件输出 --> <appender-ref ref="FILE_ERROR" /> <appender-ref ref="FILE_INFO" /> <appender-ref ref="FILE_WARN" /> <appender-ref ref="FILE_DEBUG" /> <appender-ref ref="FILE_TRACE" /> </root> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <property name="LOG_PATH" value="log"/> <property name="APP_NAME" value="take-out"/> <property name="LOG_CONSOLE_PATTERN" value="%boldBlue(%-5level) | %date{yyyy-MM-dd HH:mm:ss} | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/> <property name="LOG_PATTERN" value="%-5level | %date{yyyy-MM-dd HH:mm:ss} | %thread | %logger | %msg%n"/> <property name="MAX_HISTORY" value="30"/> <property name="MAX_FILE_SIZE" value="5MB"/> <contextName>${APP_NAME}</contextName> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${LOG_CONSOLE_PATTERN}</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>${MAX_HISTORY}</maxHistory> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> </triggeringPolicy> </appender> <root level="info"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>
The text was updated successfully, but these errors were encountered:
No branches or pull requests
configuration
logback 根标签。
scan:当配置文件如果发生改变时,将被重新加载,默认为 true。
scanPeriod
debug
configuration 的配置
contextName
每个 logger 都关联到 logger 上下文,默认值为
default
。但可使用<contextName>
设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。contextName 的配置
property
用来定义变量值的标签。
可以使用
${}
使用变量。property 的配置
timestamp
获取时间戳字符串。
timestamp
的名字;java.txt.SimpleDateFormat
的格式;timestamp 的配置
loger
用来设置某一个包或者具体的某一个类的日志打印级别,以及指定
<appender>
。name:用来指受此
loger
约束的某一个包或者具体的某一个类。level:用来设置打印级别,大小写无关
TRACE
、DEBUG
、INFO
、WARN
、ERROR
、ALL
和OFF
addtivity:是否向上级 loger 传递打印信息 默认为 true。
loger 的配置
root
也是
<loger>
元素,但是它是根loger
,只有level
属性,默认值为DEBUG
。root 的配置
appender
configuration 的子节点,主要负责写日志组件;
name:指定
appender
日志组件名称。class:指定
appender
的全限定名。ConsoleAppender 表示控制台输出
FileAppender 将日志添加到文件中
true
。 当前日志内容追加到日志文件结尾,否则清空后重新添加,默认值为true
。true
,日志会被安全的写入文件,即使其他的FileAppender
也在此文件做了写入操作,效率低,默认值为false
。RollingFileAppender 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。
rollingPolicy:当发生滚动时,决定
RollingFileAppender
的行为,涉及文件移动和重命名。triggeringPolicy:告知
RollingFileAppender
合适激活滚动。prudent:当为
true
时,不支持FixedWindowRollingPolicy
。支持TimeBasedRollingPolicy
,但是有两个限制,1 不支持也不允许文件压缩,2 不能设置file
属性,必须留空rollingPolicy
TimeBasedRollingPolicy
最常用的滚动策略,根据时间里制定滚动策略,既负责滚动也负责触发滚动。
FixedWindowRollingPolicy
根据固定窗口算法重命名文件的滚动策略。
log%i.log
,会产生归档文件log1.log
和log2.log
。triggeringPolicy
SizeBasedTriggeringPolicy
查看当前活动文件的大小,如果超出指定大小会告知
pattern 转换符说明
yyyy-MM-dd HH:mm:ss.SSS
格式修饰符,与转换符共同使用:可选的格式修饰符位于 “%” 和转换符之间。
filter
DENY:日志将立即被抛弃不再经过其他过滤器;
NEUTRAL:有序列表里的下个过滤器接着处理日志;
ACCEPT:日志将被立即处理,不再经过过滤器;
LevelFilter
级别过滤器,根据日志界别进行过滤。如果日志等级等于配置级别,过滤器会根据
onMatch
和onMismatch
接收或拒绝日志。ThresholdFilter
临界值过滤器,过滤掉低于指定临界值得日志。当日志级别等于或高于临界时,过滤器返回
NEUTRAL
;当日志级别低于临界时,日志会被拒绝。常用
logback
配置简单的
logback
配置The text was updated successfully, but these errors were encountered: