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中与日志路径相关的部分如下:
<timestamp key="bySecond" datePattern="yyyyMMdd'-'HHmmss"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>result-${bySecond}.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</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
问题解决!
上一篇:Java中的通用路径转义符介绍
栏 目:JAVA代码
下一篇:Java知识点归纳 ―给Java新手的一些建议(新手必看)
本文标题:Logback日志存放路径不统一解决方案
本文地址:http://www.codeinn.net/misctech/84802.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




