最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決logback使用${spring.application.name}日志打印路徑的問題

 更新時(shí)間:2024年06月17日 15:11:47   作者:萬物~  
這篇文章主要介紹了解決logback使用${spring.application.name}日志打印路徑的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

項(xiàng)目場景

前提:

系統(tǒng)使用的logback打印日志

日志文件在服務(wù)器目錄為/data/service/logs目錄下

分別有debug.log,info.log和error.log三個(gè)

問題描述

今天發(fā)現(xiàn)服務(wù)器上debug.log,info.log日志停止了,沒有后續(xù)日志,時(shí)間點(diǎn)為下午四點(diǎn)17,發(fā)現(xiàn)這個(gè)時(shí)間點(diǎn)為最近一次升級的時(shí)間,初步判斷是因?yàn)樯墝?dǎo)致

  • logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
    <springProperty scop="context" name="server.port" source="server.port" defaultValue=""/>
    <property name="log.path" value="logs/${spring.application.name}"/>
    <!-- 彩色日志依賴的渲染類 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property name="common-pattern-color"
              value="[${spring.application.name}:${server.port}:%X{area}:%X{orgId}:%X{userId}] %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint}:%clr([%5p]){blue} %clr([${PID}]){magenta} %clr([%X{trace}]){yellow} %clr([%t:%r]){orange} %clr([%logger{50}.%M:%L]){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />

    <!-- Console log output -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${common-pattern-color}</pattern>
        </encoder>
    </appender>


    <!-- Log file debug output -->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info/%d{yyyy-MM, aux}/log_info_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!--            <maxFileSize>50MB</maxFileSize>-->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>-->
            <pattern>${common-pattern-color}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 -->
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- Log file debug output -->
    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/debug/%d{yyyy-MM, aux}/log_debug_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!--            <maxFileSize>50MB</maxFileSize>-->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>-->
            <pattern>${common-pattern-color}</pattern>
        </encoder>
    </appender>

    <!-- Log file error output -->
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/%d{yyyy-MM}/log_error_%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--logstash 日志采集集成-->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>

    <!--nacos 心跳 INFO 屏蔽-->
    <logger name="com.alibaba.nacos" level="OFF">
        <appender-ref ref="error"/>
    </logger>
    <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="debug"/>
        <appender-ref ref="error"/>
        <appender-ref ref="info"/>
        <appender-ref ref="logstash"/>
    </root>
</configuration>

原因分析

后續(xù)排查發(fā)現(xiàn)在/data/service/logs目錄下,多了一個(gè)目錄captcha-service,captcha-service目錄下有debug.log,info.log和error.log三個(gè)日志,排查發(fā)現(xiàn)是系統(tǒng)打印的日志

日志打印為何從/logs跑到了/captcha-service下?

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
    <springProperty scop="context" name="server.port" source="server.port" defaultValue=""/>
    <property name="log.path" value="logs/${spring.application.name}"/>

觀察發(fā)現(xiàn),在logback-spring.xml里我定義的log.path為logs/${spring.application.name},但是排查項(xiàng)目中application.yml中沒有配置spring.application.name的參數(shù),所以之前打印的日志才在/data/service/logs目錄下。

通過在application.yml添加spring.application.name為test,重新啟動(dòng)發(fā)現(xiàn)生成了test文件夾 /data/service/logs/test ,那顯然captcha-service也是同理,因?yàn)榻裉焐壍臅r(shí)候我替換了一個(gè)maven的jar,主項(xiàng)目引用了這個(gè)jar,去看了下打這個(gè)jar包的項(xiàng)目,果然在application.properties里面發(fā)現(xiàn)了spring.application.name=captcha-service

解決方案

針對需要打包的jar

將application.properties文件刪除

重新打包

打包后重新替換原有的maven中jar

在對主項(xiàng)目重新編譯啟動(dòng)

發(fā)現(xiàn)在/data/service/logs的日志文件數(shù)據(jù)重新打印,解決完畢!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java并發(fā)編程同步器CountDownLatch

    Java并發(fā)編程同步器CountDownLatch

    這篇文章主要介紹了Java并發(fā)編程同步器CountDownLatch,文章基于Java并發(fā)編程的相關(guān)資料展開具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • SpringBoot整合liteflow的詳細(xì)過程

    SpringBoot整合liteflow的詳細(xì)過程

    這篇文章主要介紹了SpringBoot整合liteflow的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06
  • Springboot集成CSRF防攻擊過程

    Springboot集成CSRF防攻擊過程

    本文介紹了Springboot集成CSRF防攻擊的方法,通過設(shè)置域名或路徑白名單來過濾未知鏈接,從而達(dá)到防護(hù)目的,主要涉及兩個(gè)類:CSRFFilterConfigUtils防護(hù)配置工具類和CsrfFilter防護(hù)過濾類
    2025-11-11
  • Java動(dòng)態(tài)代理分析及理解

    Java動(dòng)態(tài)代理分析及理解

    這篇文章主要介紹了Java動(dòng)態(tài)代理分析及理解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java concurrency集合之ArrayBlockingQueue_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency集合之ArrayBlockingQueue_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    ArrayBlockingQueue是數(shù)組實(shí)現(xiàn)的線程安全的有界的阻塞隊(duì)列。下面通過本文給大家介紹Java concurrency集合之ArrayBlockingQueue的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2017-06-06
  • Java截取url參數(shù)的方法

    Java截取url參數(shù)的方法

    本文給大家?guī)砹薺ava截取url參數(shù),url值得方法,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • Springcloud seata分布式事務(wù)實(shí)現(xiàn)代碼解析

    Springcloud seata分布式事務(wù)實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了Springcloud seata分布式事務(wù)實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java?SpringBoot項(xiàng)目如何優(yōu)雅的實(shí)現(xiàn)操作日志記錄

    Java?SpringBoot項(xiàng)目如何優(yōu)雅的實(shí)現(xiàn)操作日志記錄

    這篇文章主要介紹了Java?SpringBoot項(xiàng)目如何優(yōu)雅的實(shí)現(xiàn)操作日志記錄,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒有同步,HashMap和Hashtable類似,不同之處在于HashMap是非同步的,并且允許null,關(guān)于HashSet有一件事應(yīng)該牢記,即就條目數(shù)和容量之和來講,迭代是線性的,接下來讓我們詳細(xì)來了解吧
    2021-11-11
  • Java多線程之簡單模擬售票功能

    Java多線程之簡單模擬售票功能

    這篇文章主要介紹了Java多線程之簡單模擬售票功能,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04

最新評論

兴文县| 平乐县| 通化县| 老河口市| 民丰县| 吐鲁番市| 烟台市| 建平县| 湘阴县| 贵南县| 石嘴山市| 鄂托克旗| 凤阳县| 休宁县| 五莲县| 贡觉县| 息烽县| 墨脱县| 宜宾市| 阜宁县| 乌鲁木齐市| 文水县| 措美县| 徐闻县| 东阿县| 凤山市| 翼城县| 扎赉特旗| 青州市| 平定县| 呼玛县| 涪陵区| 广平县| 柳林县| 岢岚县| 乌审旗| 太谷县| 嫩江县| 济源市| 万盛区| 巨野县|