Java 如何在logback中以可移植的方式将日志文件放在用户主目录中?

Java 如何在logback中以可移植的方式将日志文件放在用户主目录中?,java,logging,logback,portability,Java,Logging,Logback,Portability,我想把日志文件放到用户主目录中 如何以可移植的方式实现这一点,即在Windows、Linux和Mac上工作?根据,您应该使用${user.home},它是JVM中直接来自操作系统的环境变量(因此是可移植的): ${user.home}/logback.log %d{HH:mm:ss.SSS}[%thread]-5级别%logger-%msg%n 日志记录设置实际上是系统的一个配置组件。您最好将每个系统的配置分开(并加载)。实现这一点的一个好方法是使用类似ApacheCommons配置的东西,这

我想把日志文件放到用户主目录中

如何以可移植的方式实现这一点,即在Windows、Linux和Mac上工作?

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


${user.home}/logback.log
%d{HH:mm:ss.SSS}[%thread]-5级别%logger-%msg%n

日志记录设置实际上是系统的一个配置组件。您最好将每个系统的配置分开(并加载)。实现这一点的一个好方法是使用类似ApacheCommons配置的东西,这允许遍历一组属性,这些属性将指示在何处找到一次性的logback配置

我们使用类似“优先级”的方案来标识logback配置文件名。使用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"/>    

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

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

java-Dmylog.root=somelocation…

并且logback配置可以支持该属性



${mylog.root}/logback.log

使用
${user.home}
或类似的东西。查看文档(注意:第一个谷歌答案:)如果您认为下面的答案之一对您有所帮助,请将其升级/标记为“已接受”,以便其他人知道它对您有效:)(否则,请随时发表评论)
<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"/>    
logbackConfigLocation=C:/Users/dan/config/product/logback.xml