首页 > 系统服务 > 详细

使用slf4j 的logback与CAT时修改日志保存路径(解决mac下无法创建/data/文件路径)

时间:2020-02-01 11:19:55      阅读:346      评论:0      收藏:0      [点我收藏+]

这两天因为疫情,需要在家办公,但是家里只有一台MacBook Pro。在使用MBP启动SpringBoot项目的时候,发现root用户没有权限创建/data/这个文件位置。

技术分享图片

 

 

 

百度了一下,第一种是在macOS里进入的recovery模式给root用户解除权限限制,这边就不说了,网上都有。第二种就是直接修改项目里日志的保存路径。

 

首先修改logback.log的存放路径。非常简单,在项目的resource文件夹里新建一个logback-spring.xml(你可以把项目jar包里面的这个xml拷贝过来)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <contextName>logback</contextName>
    <!-- 动态 获取变量 name:变量名称,class:动态获取的类名 (类需要实现PropertyDefiner接口-->
    <define name="log.path"
            class="com.zto.titans.logging.configuration.DynamicProperty">
    </define>
    <conversionRule conversionWord="traceId" converterClass="com.zto.titans.logging.cat.CatLogBackConvert" />
    <!--输出到控制台-->
    <!--<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] ${LOG_LEVEL_PATTERN:-%p} ${PID:- } [%traceId] [%t] [%logger] : %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>-->

    <!--自定义带有开关的ConsoleAppender,输出到控制台-->
    <appender name="consoleWithSwitch" class="com.zto.titans.logging.appender.ConsoleWithSwitchAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] ${LOG_LEVEL_PATTERN:-%p} ${PID:- } [%traceId] [%t] [%logger] : %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--输出到文件-->
    <appender name="file" class="com.zto.titans.logging.appender.AsyncFlushRollingFileAppender">
        <file>${log.path}/logback.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <maxHistory>7</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1gb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <ImmediateFlush>false</ImmediateFlush>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] ${LOG_LEVEL_PATTERN:-%p} ${PID:- } [%traceId] [%t] [%logger] : %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="catAppender" class="com.zto.titans.logging.cat.log.CatLogbackAppender"></appender>

    <springProfile name="default,dev">
        <root level="info">
            <appender-ref ref="consoleWithSwitch"/>
            <appender-ref ref="file"/>
        </root>
    </springProfile>
    <springProfile name="pro,prd,stg,test,uat,fit,fat,sit">
        <root level="error">
            <appender-ref ref="consoleWithSwitch"/>
            <appender-ref ref="catAppender"/>
            <appender-ref ref="file"/>
        </root>
    </springProfile>
</configuration>

文件默认长这样,然后你只需要将log.path中定义的类com.zto.titans.logging.configuration.DynamicProperty,自己新建一个类替代他,然后把getPropertyValue的返回值中的路径改成自己想要的路径就可以了。

技术分享图片

 

 

 

关于CAT日志的输出位置。

网上搜了好多,都是让我保存在默认位置下。甚至打开源代码看,报错的位置路径居然都是写死的

技术分享图片

 

 。。。

但是最终在不懈努力下,我还是解决了这个问题。

答案就是在VM Option中加一个参数

-DCAT_HOME=/pathname/log

 

完美解决

开启疯狂加班模式

使用slf4j 的logback与CAT时修改日志保存路径(解决mac下无法创建/data/文件路径)

原文:https://www.cnblogs.com/jzl123/p/12247684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!