log-spring-xml配置详解

01、application-dev.yml配置

myapp:
  logpath: D:/logs/springboot/

02、application-prod.yml配置

myapp:
  logpath: /logs/springboot/

03、log-spring-xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!--
        property :是自定义属性,自定属性可以在xml文件任意地方使用${}
        定义日志文件的存储路径使用相对路径
    -->
    <!--<property name="LOG_PATH" value="logs"/>-->

    <!--
        springProperty:是自定义属性,自定属性可以在xml文件任意地方使用${}
        只不过,它可以去读取spring容器中上下文的信息,这样的话,可以做环境隔离了
        定义日志文件的存储路径使用相对路径
        scope="context"         spring容器的上下文的Environment
        name="LOG_PATH"         日志文件中使用的名字
        source="myapp.logpath"  在application.yml文件中配置名字
        defaultValue=""         如果myapp.logpath如果没有配置,就使用默认值
    -->
    <springProperty scope="context" name="LOG_PATH" source="myapp.logpath" defaultValue="mylogxxxx"/>

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>

    <!-- 文件日期滚动记录 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--初始文件名-->
        <file>${LOG_PATH}/log_file.log</file>
        <!--日志是否追加 true-->
        <append>true</append>
        <!--可以支持并发-->
        <prudent>true</prudent>
        <!--开始定义日志的回滚策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件每天生成的格式是-->
            <fileNamePattern>${LOG_PATH}/log_file_%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- maxHistory日志保留时长,30天。超过天数后删除日志文件,同时配套目录一起删除。该参数不一定是指天数,也可以是月份数。
            具体参考滚动规则fileNamePattern,看是依赖什么进行滚动的-->
            <maxHistory>30</maxHistory>
            <!--所有的日志文件最大100MB,超过就会删除旧的日志-->
            <totalSizeCap>100MB</totalSizeCap>
        </rollingPolicy>
        <!--滚动触发规则-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--单个日志文件最大1M,到了这个值,就会再创建一个日志文件,日志文件的名字最后+1-->
            <maxFileSize>1MB</maxFileSize>
        </triggeringPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出: %d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %logger:类名  %M:方法名  %L:行号     %msg:日志消息    %n:是换行符-->
            <!--  %clr(log){yellow}: 输出颜色 -->
            <pattern>【FILE】 %d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] [%-5level] %logger %M %L - %msg%n</pattern>
        </encoder>
        <!-- 把error以下级别的日志过滤掉  info < warn <error  -->
        <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>-->
    </appender>

    <!--日志异步到数据库  -->
    <appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="com.zaxxer.hikari.HikariDataSource">
                <driverClassName>com.mysql.jdbc.Driver</driverClassName>
                <jdbcUrl>jdbc:mysql://localhost:3306/kss-web-db?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</jdbcUrl>
                <username>root</username>
                <password>12345678</password>
                <poolName>HikariPool-logback</poolName>
            </dataSource>
        </connectionSource>
    </appender>

    <!-- 控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化输出: %d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %logger:类名  %M:方法名  %L:行号     %msg:日志消息    %n:是换行符-->
            <!--  %yellow(log): 输出颜色 -->
            <pattern>【czr - CONSOLE】 %yellow(%d{yyyy-MM-dd HH:mm:ss:SSS}) %green([%thread]) %blue([%-5level]) %logger %M %L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 把error以下级别的日志过滤掉  info < warn <error  -->
        <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
            <level>INFO</level>
        </filter>-->
    </appender>

    <!-- 把日志异步输出到磁盘文件中,避免每次都进行磁盘IO操作 -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <!--每一百条写一次-->
        <queueSize>100</queueSize>
        <appender-ref ref="FILE" />
    </appender>

    <!--开发坏境-->
    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ASYNC"/>
            <!--<appender-ref ref="DBAPPENDER"/>-->
        </root>
    </springProfile>

    <!--生产坏境-->
    <springProfile name="prod">
        <root level="ERROR">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ASYNC"/>
            <appender-ref ref="DBAPPENDER"/>
        </root>
        <!--单独配置-->
        <logger name="com.kuangstudy.order" level="INFO">
            <appender-ref ref="FILE"/>
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="DBAPPENDER"/>
        </logger>
    </springProfile>
</configuration>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: logback-spring.xml 是使用 Spring Boot 框架进行日志记录的配置文件之一。它使用 Logback 库,这是一个广泛使用的 Java 日志框架。 以下是一个 logback-spring.xml 配置文件的例子,以及其每个配置选项的说明: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台输出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 日志文件输出 --> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/mylog.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/mylog.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 日志级别设置 --> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> </configuration> ``` 配置文件中的 `<configuration>` 标签是必需的,它包含了整个配置文件。下面是每个配置选项的详细说明: - `<appender>`:定义一个日志输出目标,可以是控制台或文件。`name` 属性是必需的,用于引用此 appender。`class` 属性指定 appender 的实现类。 - `<encoder>`:定义输出格式,将日志信息转换为文本。`pattern` 元素是必需的,用于指定输出格式。 - `<file>`:定义日志文件名,可以是相对路径或绝对路径。 - `<rollingPolicy>`:定义滚动策略,用于在日志文件达到一定大小或时间间隔时,将当前日志文件重命名并创建新的日志文件。`class` 属性指定滚动策略的实现类。`fileNamePattern` 元素指定日志文件名的格式。`maxHistory` 元素定义保留的历史日志文件数目。 - `<root>`:定义日志记录器的根节点,用于指定日志级别和输出目标。`level` 属性指定日志记录器的级别,包括 TRACE、DEBUG、INFO、WARN、ERROR 和 OFF。`appender-ref` 元素用于指定输出目标,可以是之前定义的 appender。 希望这个简单的logback-spring.xml配置例子能够对你有所帮助。 ### 回答2: logback-spring.xmlLogback日志框架在Spring Boot项目中的配置文件,它的作用是为了更好的集成和使用Logback。下面我们来详细解析一下它的配置。 首先,logback-spring.xml需要放在classpath下,它会自动覆盖logback.xml,在Spring Boot应用启动时被加载。Logger和Appender是Logback日志框架中比较重要的组件,所以我们需要着重来讲解。 1. Logger Logger是Logback日志框架中的主要组件,它负责接收日志信息,并且把日志信息转发给相应的Appender进行输出。Logger的常见配置项如下: ① name:用来指定Logger的名字,通常是当前类的包名。 ② level:用来指定日志级别,常用的级别有TRACE、DEBUG、INFO、WARN、ERROR和FATAL。 ③ additivity:用来指定是否向父Logger传递日志信息,默认为true,意味着Logger会向上层的父Logger发送该日志信息。 Logger的配置例子: <logger name="com.example.demo" level="DEBUG" additivity="true"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </logger> 上面的配置代码表示日志输出到控制台和文件,并采用DEBUG级别。 2. Appender Appender是Logback日志框架中的输出目的地,用来定义将日志信息输出到哪里。Appender的常见配置项如下: ① name:用来给Appender一个名字,最好是全局唯一的。 ② class:用来指定Appender的具体实现类。 ③ encoder:用来指定日志输出格式,可以是SimpleEncoder或PatternLayout。 ④ file:输出日志的文件路径。 Appender的配置例子: <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative [%thread] %-5level %class{35} - %msg%n</pattern> </encoder> </appender> 上面的配置代码表示输出到控制台,使用ConsoleAppender类,并且指定输出格式。 除了Logger和Appender之外,Logback日志框架还提供了Layout、Filter等组件来帮助我们更好的为日志配置样式、添加日志过滤器等操作。 细节注意: 1.由于Logback日志框架采用类似责任链模式的方式处理日志,因此最好不要在logback-spring.xml中定义多个Appender。 2.在使用Logback日志框架时,最好将logback.xmllogback-spring.xml文件的日志级别设置成INFO以上级别,这样可以确保在生产环境中输出日志时不会太过频繁。 3.尽量不要在logback-spring.xml内动态修改日志级别,推荐使用Spring Boot Actuator的loggers接口动态修改日志级别。 ### 回答3: logback-spring.xml是在Spring框架中使用的日志配置文件。该文件定义了Logback日志框架的配置参数,以满足不同的日志记录需求。在下面,我将详细介绍logback-spring.xml的各种配置参数: 1. <configuration>标签:logback-spring.xml的根标签,可以用于定义全局的配置属性。 2. <appender>标签:用于指定日志输出器的类型和相关参数。 3. <logger>标签:配置日志记录器,包括指定输出级别、输出格式、是否继承等属性。 4. <root>标签:指定根日志记录器,可以通过该标签指定所有日志输出器的默认输出级别。 5. <springProperty>标签:可以在配置文件中定义一些Spring框架的属性值,供其他组件使用。 6. <conversionRule>标签:定义日志输出格式的转换规则,可以通过该标签自定义日志输出格式。 7. <encoder>标签:指定日志格式化器的类型和相关参数。 总之,logback-spring.xml文件是Logback日志框架在Spring框架中的配置文件,通过其中的配置参数,可以灵活地实现日志输出级别、格式、输出器等方面的定制化需求。为了更好地应对不同的日志需求,我们需要合理地利用各种配置标签和属性,为应用程序提供高质量的日志记录服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值