Logback Appender(废弃) 作者:马育民 • 2021-01-24 12:32 • 阅读:10058 # 介绍 logback 将写入日志事件的任务委托给一个名为 **appender** 的组件。Appender 必须实现 `ch.qos.logback.core.Appender` 接口。 ### 内置 appender - **ConsoleAppender**:将日志打印到控制台 - FileAppender:将日志输出到文件中 - **RollingFileAppender**:继承自FileAppender,具有轮转日志文件的功能。 例如:RollingFileAppender 将日志输出到 log.txt 文件,在满足了特定的条件之后,将日志输出到另外一个文件。 - SocketAppender and SSLSocketAppender:将日志传输到远端服务器 - SMTPAppender:将日志发送到邮箱 - DBAppender:将日志保存到数据库中 - 更多点击 [链接](http://www.logback.cn/04%E7%AC%AC%E5%9B%9B%E7%AB%A0Appenders.html "链接") # ConsoleAppender ``` <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern> <!-- 日志编码 --> <charset class="java.nio.charset.Charset">UTF-8</charset> </encoder> </appender> ``` **解释:** encoder :定义日志字符串格式。 如下: `<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>` 显示结果如下: ``` 11:06:18.980 [http-nio-8080-exec-1] DEBUG t.m.dao.NoticeMapper.getNoticeById:137- ==> Preparing: select * from t_notice where id=?; ``` # FileAppender ``` <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 把日志文件输出到:项目启动的目录下的log文件夹(无则自动创建)下 --> <file>${log-dir}/${log-name}.log</file> <!-- 把日志文件输出到:name为logFilePositionDir的property标签指定的位置下 --> <!-- <file>${logFilePositionDir}/logFile.log</file> --> <!-- 把日志文件输出到:当前磁盘下的log文件夹(无则自动创建)下 --> <!-- <file>/log/logFile.log</file> --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- TimeBasedRollingPolicy策略会将过时的日志,另存到指定的文件中(无该文件则创建) --> <!-- 把因为 过时 或 过大 而拆分后的文件也保存到目启动的目录下的log文件夹下 --> <fileNamePattern>${log-dir}/${log-name}.%d{yyyy-MM-dd}.%i.log </fileNamePattern> <!-- 设置过时时间(单位:<fileNamePattern>标签中%d里最小的时间单位) --> <!-- 系统会删除(分离出去了的)过时了的日志文件 --> <!-- 本人这里:保存以最后一次日志为准,往前7天以内的日志文件 --> <MaxHistory> 7 </MaxHistory> <!-- 滚动策略可以嵌套; 这里嵌套了一个SizeAndTimeBasedFNATP策略, 主要目的是: 在每天都会拆分日志的前提下, 当该天的日志大于规定大小时, 也进行拆分并以【%i】进行区分,i从0开始 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>5MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <!-- 日志输出格式 --> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern> <!-- 日志编码 --> <charset class="java.nio.charset.Charset">UTF-8</charset> </encoder> </appender> ``` **解释** - file:要写入文件的名称。如果文件不存在,则新建 - rollingPolicy:当轮转发生时,指定 RollingFileAppender 的行为。 - TimeBasedRollingPolicy:基于时间来定义轮转策略 - fileNamePattern:定义了轮转时的文件名 - maxHistory:最多保留多少个日志文件 ### 内置rollingPolicy - **TimeBasedRollingPolicy**:基于时间来定义轮转策略 - SizeAndTimeBasedRollingPolicy:基于大小以及时间的轮转策略 - FixedWindowRollingPolicy:根据固定窗口算法重命名文件 原文出处:/show_1IXSqKT1i6H.html