java - 如何将 logback 文件路径概括为 windows/linux 操作系统?
问题描述
我有一个 Java 应用程序。我的开发环境是 Windows 操作系统,我的生产操作系统是 linux。该应用程序需要读取/写入操作系统中的一些文件,其中包括日志文件(我正在使用 logback lib)。在我的 Windows 开发环境中,我将日志路径配置为绝对位置:C://logger/my-app.log
以下是相关的 logback.xml 配置文件代码:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>C://logger/my-app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>C://logger/my-app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
但是,正如所提到的,我的产品环境是一个 linux 操作系统。我也想在 linux 机器上用一个 config xml 文件在绝对路径下创建文件。我不希望在已部署的 jar 文件的上下文中创建该文件,而是在某个绝对路径中创建该文件。怎么做到呢?
解决方案
为了使 Web 应用程序具有可移植性,并且无论任何操作系统都应生成日志文件。您必须使用user.home
环境变量属性。我在下面提供了适用于 Windows 和 Linux 的 logback 片段。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.home}/logs/my-app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>C://logger/my-app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
推荐阅读
- python - Python 产品聊天机器人
- javascript - 仪表板中的图表应在表单提交后更新
- python - 如何从标签=> 0,1,2,3 ....重命名熊猫系列结构的索引?
- python - 如何将值从 python 列表传递到图表?
- docker - 为什么在 docker-compose 我应该写卷的完整路径?
- struct - OpenACC 如何在函数的不同调用之间保留数据?
- html - 自动完成输入建议
- r - 如何通过多个 GET 查询加快 httr 的使用?
- asp.net - 如何从 OKTA API 获取注册设备名称
- sql-server - JSON_VALUE 在 SQL Server 的 where 子句中不起作用