Logback日志存放路徑的問題


問題:

  將一個應用程序打成了Jar包后,使用命令運行jar包,發現日志存放的路徑並不統一:

    比如 hello.jar 包放在  /aaa/bbb 目錄下
    如果在 /aaa/bbb 目錄下執行:java -jar hello.jar ,那么日志就會存放在 /aaa/bbb 目錄下
    如果在 /aaa 目錄下執行:java -jar bbb/hello.jar ,那么日志就會存放在 /aaa 目錄下

  如何才能不同位置執行jar包,但是日志放到一個統一的目錄中呢?

 

解決過程:

  查看logback.xml中與日志路徑相關的部分如下:

1 <timestamp key="bySecond" datePattern="yyyyMMdd'-'HHmmss"/>
2 <appender name="FILE" class="ch.qos.logback.core.FileAppender">
3     <file>result-${bySecond}.log</file>
4     <append>true</append>
5     <encoder>
6         <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
7     </encoder>
8 </appender>

 

  <file>result-${bySecond}.log</file>指定了存放日志的名稱,是result-yyyyMMdd-HHmmss.log格式

  其實這里也可以指定路徑的,比如:<file>/home/xxx/logs/result-${bySecond}.log</file>

  如果能夠把這個絕對路徑配置一下就好了,而且是在程序外部,這樣方便了打成jar包以后也能配置
  比如:<file>${logback.home}/result-${bySecond}.log</file>,在外部指定${logback.home}就可以

  “隨着通用日志組件轉入 Slf4j,logback 也變成了默認的日志實現,像 log4j 一樣,logback.xml 中也可以使用系統屬性或環境變量,如 ${catalina.home}。”

  既然logback是可以使用系統屬性的,那就可以使用java -D 配置系統屬性
  如下:java -Dlogback.home="/home/xxx/logs" -jar hello.jar

  問題解決!

  

  原創文章,歡迎轉載,轉載請注明出處!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM