• 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

      问题解决!

      

      原创文章,欢迎转载,转载请注明出处!

  • 相关阅读:
    Rust语言环境配置;Rust版本1.45.2学习
    《代码英雄》系列整理
    Pingcap High Performance TiDB 课程学习记录@yaowenxu
    11. C语言百钱买百鸡问题(详解版)
    10. C语言输出菱形(详解版)
    9. C语言判断素数(求素数)(两种方法)
    8. C语言求圆周率π(三种方法)
    7. C语言杨辉三角(两种方法)
    6. C语言九九乘法表(五种输出形式)
    5. C语言希尔排序算法
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/logbackPath.html
Copyright © 2020-2023  润新知