logback配置文件logback-spring.xml

在项目开发中,编写了一个logback配置文件,用于处理日志相关事务,这在信息技术项目里对日志管理有重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目开发中写的一个logback配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!--  日志默认输出位置为tomcat目录下的bin目录 ../logs指tomcat下日志文件路径 -->
    <property name="log_path" value="../logs/ldx-manage-log" />

    <!--    控制台打印配置    -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}}</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <!--    文件打印配置    -->
    <!--  ***************************  ERROR级别日志文件打印  ***************************  -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log_path}/error/ldx-manage.log</file>
        <!-- 日志记录器的滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--  日志命名规则 %d{yyyy-MM-dd} 日期格式, %i 分页索引 -->
            <fileNamePattern>${log_path}/error/ldx-manage.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--  日志保留天数  -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日志文件大小,超过后开始分页 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!--  日志格式及编码  -->
        <encoder>
<!--            <pattern>${FILE_LOG_PATTERN}</pattern>-->
<!--            <pattern>%white(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%lsn) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</pattern>-->
            <pattern>d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- %logger{50}[%M][%L] - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--      只记录error级别日志      -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--  ***************************  允许输出的所有级别日志文件打印  ***************************  -->
    <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log_path}/all/ldx-manage.log</file>
        <!-- 日志记录器的滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--  日志命名规则 %d{yyyy-MM-dd} 日期格式, %i 分页索引 -->
            <fileNamePattern>${log_path}/all/ldx-manage.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--  日志保留天数  -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日志文件大小,超过后开始分页 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!--  日志格式及编码  -->
        <encoder>
<!--            <pattern>${FILE_LOG_PATTERN}</pattern>-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- %logger{50}[%M][%L] - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>


    <!-- ************************* 本地开发环境日志配置 *************************  -->
    <springProfile name="dev">
        <!--    trace, debug, info, warn, error, all, off    -->
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ERROR_FILE"/>
            <appender-ref ref="ALL_FILE"/>
        </root>
    </springProfile>


    <!-- ************************* 服务器生产、测试环境日志配置 *************************  -->
    <springProfile name="!dev">
        <!--    trace, debug, info, warn, error, all, off    -->
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ERROR_FILE"/>
            <appender-ref ref="ALL_FILE"/>
        </root>
    </springProfile>

</configuration>



### 正确配置 `logback-spring.xml` 文件并启动应用 为了正确配置 `logback-spring.xml` 文件并通过 `start.sh` 启动应用程序,以下是详细的说明: #### 配置 `logback-spring.xml` 1. **命名规范** 确保日志配置文件命名为 `logback-spring.xml` 而不是 `logback.xml`,因为 Spring Boot 默认优先加载此文件[^1]。 2. **文件结构** 下面是一个典型的 `logback-spring.xml` 文件示例,展示了如何定义日志级别、输出路径以及滚动策略: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 定义日志文件存储位置 --> <property name="LOG_PATH" value="/mnt/im-be/applog"/> <!-- 控制台日志输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 文件日志输出 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/application.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天生成一个新的日志文件 --> <fileNamePattern>${LOG_PATH}/application-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 保留最近7天的日志 --> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 设置全局日志级别 --> <root level="info"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> </configuration> ``` 上述配置中,日志被写入到 `/mnt/im-be/applog/application.log` 中,并按日期分割保存最多七天的历史记录。 --- #### 修改 `start.sh` 脚本以挂载配置文件 根据提供的 `start_up.sh` 示例脚本[^2],可以通过 Docker 的 `-v` 参数将主机上的 `logback-spring.xml` 文件映射至容器内的指定路径。假设该文件存放在主机的 `/home/extradisk/im/bin/config/logback-spring.xml`,则可以按照如下方式调整脚本: ```bash #!/bin/bash docker run -d \ -p 8082:8082 \ -v /home/extradisk/im/bin/config:/mnt/im-be/config \ -v /home/extradisk/im/applog:/mnt/im-be/applog \ -e LC_ALL="en_US.UTF-8" \ -e TZ="Asia/Shanghai" \ --name im-be \ xx/im-be:v1 ``` 上述命令中的 `-v /home/extradisk/im/bin/config:/mnt/im-be/config` 将主机上 `/home/extradisk/im/bin/config` 目录下的所有文件(包括 `logback-spring.xml`)挂载到了容器内部的 `/mnt/im-be/config` 目录下。 如果应用程序默认读取类路径根目录下的 `logback-spring.xml`,可以在程序启动参数中显式设置其路径: ```bash java -Dlogging.config=/mnt/im-be/config/logback-spring.xml -jar your-application.jar ``` 或者,在 Docker 命令中追加环境变量来实现相同效果: ```bash -e LOGGING_CONFIG=/mnt/im-be/config/logback-spring.xml ``` 这一步骤确保了即使容器重启或重新部署,外部配置文件仍然可用且可维护。 --- #### 关于 Spring Cloud Bootstrap Context 当使用 Spring Cloud 时,需要注意的是,Bootstrap Context 是 Application Context 的父上下文[^3]。因此,任何在 `bootstrap.yml` 或其他引导阶段生效的属性都会影响日志系统的初始化过程。例如,如果您希望动态控制日志级别的行为,可能需要在 `bootstrap.yml` 中预先声明某些属性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌影~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值