如何在logback中以便携方式将日志文件放在用户主目录中?

时间:2016-08-01 10:51:06

标签: java logging logback portability

我想将日志文件放入用户主目录。

如何以便携方式实现,即在Windows,Linux和Mac上工作?

3 个答案:

答案 0 :(得分:18)

根据Logback documentation,您应该使用${user.home},这是JVM中直接来自操作系统的环境变量(因此它是可移植的):

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${user.home}/logback.log</file>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

答案 1 :(得分:0)

日志记录设置实际上是系统的配置组件。您最好的选择是分离(并加载)每个系统的配置。这样做的一个好方法是使用像Apache Commons Configuration这样的东西,这允许遍历一组属性,这些属性将指示在哪里找到一次性的logback配置。

我们使用&#34; priority&#34;类似于识别回溯配置文件名的方案。使用Apache Commons配置,我们指定一个方案,如:

<configuration config-name="master-config">
<!--  start here, properties encountered in the first file would be ignored in the last file -->
<properties fileName="/opt/config/log.properties" optional="true"/> 
<properties fileName="${sys:user.home}/config/product/log.properties" optional="true"/>
<properties fileName="com/company/product/config/log.properties"/>    

在我的本地Windows开发框($ {sys:user.home} /config/product/log.properties)文件看起来像

logbackConfigLocation=C:/Users/dan/config/product/logback.xml 

然后每个系统/用户可以根据需要配置/设置日志记录。在servlet上下文中,您可以加载并初始化logback。

答案 2 :(得分:0)

只需添加,路径也可以是您定义为系统属性的任何内容。例如,

java -Dmylog.root=somelocation ...

并且logback配置可以使用该属性。

<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${mylog.root}/logback.log</file>