springboot Logback 不同环境,配置不同的日志输出路径

1.背景:

mac 笔记本开发,日志文件写到/data/logs/下,控制台报出:Failed to create parent directories for [/data/logs/...........

再去手动在命令窗口创建文件夹data,报Read-only file system

2.修改logback-spring.xml文件:

resource 目录下的配置文件列表:

在logback-spring.xml添加配置, 只有local写到当前项目下的data目录,其他环境写到系统根目录/data下

复制代码
<springProfile name="local">
    <property name="LOG_HOME" value="./data/logs/${appName}/${hostname}/"/>
</springProfile>

完整的logback-spring.xm

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <springProperty scope="context" name="appName" source="spring.application.name"
                    defaultValue="onemap-quality-manage-service"/>
    <springProperty scope="context" name="ip" source="spring.cloud.client.ip-address"/>
    <property name="CONSOLE_LOG_PATTERN"
              value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [${ip} ${appName}] [%(%-5level) %logger{80}:%line]:%msg%n"/>
    <property name="LOG_HOME" value="/data/logs/${appName}/${hostname}/"/>
    <springProfile name="local">
        <property name="LOG_HOME" value="./data/logs/${appName}/${hostname}/"/>
    </springProfile>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 日志文件:按照每天生成 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${appName}-${ip}-info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件地址和名称-->
            <FileNamePattern>${LOG_HOME}/${appName}-${ip}-info-%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- error日志 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${appName}-${ip}-error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件地址和名称-->
            <FileNamePattern>${LOG_HOME}/${appName}-${ip}-error-%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level><!-- 只接收错误级别的日志 -->
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--设置框架的日志-->
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.apache" level="WARN"/>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="ERROR"/>
    </root>
</configuration>

3.profiles.active 指定配置的local

日志写到当前项目下的/data/目录

相关推荐
EumenidesJ3 天前
Java常用日志框架介绍
java·log4j·logback·slf4j
躲在没风的地方12 天前
logback日志控制服务器日志输出
java·服务器·logback
ta叫我小白17 天前
Spring Boot 设置滚动日志logback
java·spring boot·spring·logback
代码的余温20 天前
Spring Boot集成Logback日志全攻略
xml·spring boot·logback
代码的余温20 天前
Logback.xml配置详解与实战指南
xml·logback
清风920020 天前
Logback——日志技术(基础)
java·前端·logback
代码的余温21 天前
MyBatis集成Logback日志全攻略
java·tomcat·mybatis·logback
秋千码途23 天前
小架构step系列08:logback.xml的配置
xml·java·logback
枣伊吕波1 个月前
第十五节:第六部分:日志技术:logback的核心配置文件详解、日志级别
logback
再见晴天*_*1 个月前
logback 日志不打印
java·服务器·logback