美文网首页java
Logback日志配置

Logback日志配置

作者: 书怀袖 | 来源:发表于2018-12-14 22:43 被阅读0次

springboot版本2.0.6

1. 配置文件:logback-spring.xml

根据springboot文档的说法,logback.xml配置文件加载太快,为了使用扩展属性,应使用logback.xml

Because the standard logback.xml configuration file is loaded too early, you cannot use extensions in it. You need to either use logback-spring.xml or define a logging.config property.

2. 如何使用额外的配置

logback有两个标签可以定义变量:property和springProperty

property自定义变量,也可以引用文件

自定义变量:

<property name="USER_HOME" value="/home/sebastien" />

可以引用文件

<property file="src/main/java/chapters/configuration/variables1.properties" />

<- 文件根目录为resources文件夹 -><property resource="log/logbackproperty.yml"/>

springProperty使用spring属性

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"        defaultValue="localhost"/>

因为加载顺序的缘故,如果使用application.properties或者application.yml会在项目根目录产生一个XX_IS_UNDEFINED的文件夹,用于存放日志文件。为避免这种情况出现,应将属性写在bootstrap.yml文件内

参考配置 - bootstrap.yml

spring:  application:    name: xx    logging:  # logback入口文件  config: classpath:logback-spring.xml  # 文件放置文件夹  path: /logs/${spring.application.name}

3. logback-spring.xml - 入口文件

<?xml version="1.0" encoding="UTF-8"?>​<configuration debug="false">​    <!-- logback中使用自定义变量 -->    <property resource="log/logbackproperty.yml"/>​    <!-- 使用bootstrap.yml配置appname -->    <springProperty scope="context" name="appname" source="spring.application.name" defaultValue="test"/>    <!-- LOG_PATH变量在bootstrap中配置,即logging.path -->       <!-- 基础配置 -->    <include resource="log/logback-base.xml"/>​    <!-- database配置 -->    <include resource="log/logback-database.xml"/>​    <root level="INFO" additivity="true">        <appender-ref ref="STDOUT"/>        <appender-ref ref="ROLLINGFILE"/>        <appender-ref ref="ERROR_FILE"/>    </root>​</configuration>

4. logbackproperty.yml -> 自定义logback变量

# 自定义logback变量CHARSET: UTF-8CONSOLE_LOG_PATTERN: %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

5. logback-base.xml -> 基础配置

<?xml version="1.0" encoding="UTF-8"?><!-- 基础配置 --><included><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">            <level>Debug</level>        </filter>        <encoder>            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>            <charset>UTF-8</charset>        </encoder>    </appender>​    <!--输出到文件-->​    <!-- 时间滚动输出 level为 DEBUG 日志 -->    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <!-- 正在记录的日志文件的路径及文件名 -->        <file>${log.path}/log_debug.log</file>        <!--日志文件输出格式-->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset> <!-- 设置字符集 -->        </encoder>        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 日志归档 -->            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>100MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>            <!--日志文件保留天数-->            <maxHistory>15</maxHistory>        </rollingPolicy>        <!-- 此日志文件只记录debug级别的 -->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>debug</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender>​    <!-- 时间滚动输出 level为 INFO 日志 -->    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <!-- 正在记录的日志文件的路径及文件名 -->        <file>${log.path}/log_info.log</file>        <!--日志文件输出格式-->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset>        </encoder>        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 每天日志归档路径以及格式 -->            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>100MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>            <!--日志文件保留天数-->            <maxHistory>15</maxHistory>        </rollingPolicy>        <!-- 此日志文件只记录info级别的 -->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>info</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender>​    <!-- 时间滚动输出 level为 WARN 日志 -->    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <!-- 正在记录的日志文件的路径及文件名 -->        <file>${log.path}/log_warn.log</file>        <!--日志文件输出格式-->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset> <!-- 此处设置字符集 -->        </encoder>        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>100MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>            <!--日志文件保留天数-->            <maxHistory>15</maxHistory>        </rollingPolicy>        <!-- 此日志文件只记录warn级别的 -->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>warn</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender>​    <!-- 时间滚动输出 level为 ERROR 日志 -->    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <!-- 正在记录的日志文件的路径及文件名 -->        <file>${log.path}/log_error.log</file>        <!--日志文件输出格式-->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset> <!-- 此处设置字符集 -->        </encoder>        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>100MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>            <!--日志文件保留天数-->            <maxHistory>15</maxHistory>        </rollingPolicy>        <!-- 此日志文件只记录ERROR级别的 -->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>    </appender></included>

6. logback-database.xml -> database日志配置

<?xml version="1.0" encoding="UTF-8"?>​<!-- 日志配置 --><included>    <logger name="jdbc.sqltiming" level="info"/>    <logger name="com.ibatis" level="info"/>    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="info"/>    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="info"/>    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"            level="info"/>    <logger name="java.sql.Connection" level="info"/>    <logger name="java.sql.Statement" level="info"/>    <logger name="java.sql.PreparedStatement" level="info"/>    <logger name="java.sql.ResultSet" level="info"/></included>

7. 使用

原则:按需修改

使用默认配置:只需修改bootstrap.yml内spring.application.name - 即服务名称

windows系统需修改bootstrap.yml内logging.path - 即文件存放路径

相关文章

网友评论

    本文标题:Logback日志配置

    本文链接:https://www.haomeiwen.com/subject/vwmnhqtx.html