当前位置: 首页 > 知识库问答 >
问题:

类路径中的logback.xml与logging.config环境参数一起执行spring boot

袁琪
2023-03-14

我有一个Spring启动项目(版本1.3.6),我已经添加了logback.xml到项目中。在创建可执行 jar 时,日志返回.xml包含在 jar 中,并且还按预期工作。由于开发是在 Windows 系统上完成的,因此类路径中的日志.xml将日志添加到路径 F:/应用程序/日志/abc.log处的文件。

但是在unix服务器上部署jar时,我想从外部文件提供日志回.xml配置,并使用不同的日志文件路径(/opt/logs/abc.log)。我在执行 jar 文件时使用 -Dlogging.config 参数来提供外部回溯.xml配置文件,如下所示。

java -Dlogging.config=/path/to/logback.xml -jar ABC.jar

在运行上述命令时,根据外部文件配置,日志在 /opt/logs/abc.log成功创建,但问题是 F:/应用程序/logs/abc.log目录结构也使用 0 字节文件创建,尽管在此中没有完成日志记录。

因此,如果我从服务器上的/local目录运行我的应用程序,那么将创建以下目录。

/local/F:/application/logs/abc.log

我的问题是,如果使用外部日志.xml配置,我们如何避免创建类路径日志文件目录结构(/本地/F:/应用程序/日志/abc.log)。

我的日志.xml如下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<appender name="ROLLINGFILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>F:/FRF/logs/iqcx-ticketing.log</file>
    <append>true</append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>F:/FRF/logs/iqcx-ticketing-%d{yyyy-MM}.%i.zip
        </fileNamePattern>
        <maxHistory>10</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>20MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%date{ISO8601} [%thread] - %-5level %logger %X - %msg%n
        </pattern>
    </encoder>
</appender>
<root>
    <appender-ref ref="ROLLINGFILE" />
</root>
<logger name="iqcxLogger" level="info">
    <appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.springframework" level="info" additivity="false">
    <appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.mybatis.spring" level="info" additivity="false">
    <appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.hibernate.validator" level="info" additivity="false">
    <appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.apache.commons.beanutils" level="info" additivity="false">
    <appender-ref ref="ROLLINGFILE" />
</logger>

</configuration>

共有1个答案

上官正志
2023-03-14

由于logback.xml位于类路径F中,因此将创建/application/logs/abc.log,除非您通过在命令行中添加< code >-dlogging . file =/opt/logs/ABC . log 参数来覆盖< code>logging.file属性

 类似资料:
  • 因此,完整的警告看起来像 我刚刚安装了JDK(版本:14.0.1从这里开始)和Eclipse(版本:2020-03(4.15.0从这里开始) 我读过post1和post2,但我没有Java中的任何库->构建路径->用户库。根本就空着。在已安装的库中,我没有任何jdk{version}。我只有名字“JDK”和位置“D:\...” 我是不是遗漏了一些重要东西?因为我不知道如何修复它。 我是newbee

  • 当代码在运行时,它所在的执行环境非常重要。 执行上下文 在 JavaScript 中,执行上下文与执行环境关系密切,它与函数和变量的声明息息相关,通常认为有两种执行上下文: 全局上下文——代码首次执行的默认环境; 函数上下文——当代码执行进入函数体中。 让我们来看一段包含这几种执行上下文的代码: // 全局上下文​var hello = 'Hello!';​function introduce()

  • 问题内容: 我在Eclipse Helios中创建一个Maven项目。它一天可以正常工作,但是随后出现此警告: 构建路径指定执行环境J2SE-1.4。在工作区中没有安装与该环境严格兼容的JRE。 自从出现此消息以来,项目停止了编译和调试。有人对此问题有解决方案吗? 问题答案: 在项目中的Eclipse中: 右键点击你的项目 单击属性 Java构建路径:库;删除“ JRE系统库[J2SE 1.4]”

  • 我正在学习一门乌德米课程“Selenium WebDrive withJavafor初学者”,并且已经完成了课程中的所有设置,但是我一生都无法摆脱eclipse中的这个警告。我验证了我的mac上安装了java18.0.1.1,编辑了eclipse中的构建路径以指向18.0.1.1jdk。问题是,JRE系统库不断恢复到JavaSE-17,afaik没有安装在我的机器上。每次我单击更新maven项目时

  • 不知什么原因,我的有许多的重复项。据我所知,长是不好的,因为它会减慢搜索过程。删除这些副本安全吗? C:\程序文件(x86)\Intel\ICLS客户端\;C:\程序文件\Intel\ICLS客户端\;C:\Windows\System32;C:\Windows;C:\Windows\System32\WBEM;C:\Windows\System32\WBEM;C:\Windows\System3

  • 问题内容: 我正在尝试从Windows命令提示符(Windows 10)运行python。因此,结果是未配置路径环境变量时的典型结果 但是,我不确定应该在path变量中设置哪个目录。 我尝试了一些变体,但没有一个起作用,包括: 他们都不起作用。 有没有人对这个特定的系统星座(Windows,anaconda)有经验。谢谢。 问题答案: 原来我错了。 解决方案是:在anaconda(以及其他实现中)