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

Spring Boot日志记录:log4j2.xml中系统变量的使用

阚原
2023-03-14

我正在以JAR的形式运行Spring Boot应用程序

java -Dlogs.location=<path/to/my/logs> -jar my-app.jar
or 
java -Dlogs.location=<path/to/my/logs> -jar my-app.jar --logs.location=<path/to/my/logs>

下面是示例log4j2.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration >
    <Properties>
        <Property name="base.log.dir">${sys:logs.location}</Property>
    </Properties>
....
</Configuration>

Spring boot应用程序正在创建${sys:logs.location}文件夹,而不是正确地从jvm参数解析系统属性。

我正在使用log4j2-spring.xml配置log4j2。

我已经查看了StackOverflow Q。此答案读取properties Bundle。但我想读取sys属性

共有1个答案

羊浩广
2023-03-14

定义一个属性,如

<Properties>
    <Property name="filePathVar"> ${sys:filepath:-/logs/app.log} </Property>
</Properties>

并在xml文件中使用类似“${filePathVar}”的filePathVar,并参考该文件获得运行时参数-https://stackoverflow.com/A/37439625/5055762

注意-如果没有作为运行时参数传递,则/logs/app.log将是默认值

 类似资料:
  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 问题内容: 我正在使用log4j2。但是我面临的问题是它记录了所有日志。我想…从特定程序包登录到特定文件,而其他程序包登录到另一个文件。我正在使用log4j2.xml进行配置。请有人帮忙吗? log4j2.xml 问题答案: 刚刚回答了这个问题。 log4j2.xml 从根记录器中删除了。因此,它开始基于包记录日志。

  • 如何在JMeter 4.0中禁用日志记录。在执行任何JMeter脚本时,都需要根据定义的日志级别生成日志。 log4j2 中的配置应该是什么.xml,以便它不会生成任何日志?

  • 假设我们构建了一个JavaSDK,不同的项目可以通过将其添加为类路径中的jar或添加为mavenpom.xml或gradle文件中的依赖项来使用它。当其他项目使用该库时,SDK中的日志在运行时不可见。我尝试使用SL4J,当其他项目使用它时,没有一个日志在运行时可见。我应该用log4j2吗?如果是,我应该在我的SDK中提供log4j配置 /properties文件吗?是否会在运行时从消费者库中提取属

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https: