Log4j2 没有为 graylog

问题描述

这可能是重复的,但这里是运行失败...

<Configuration status="debug" name="myproject" packages="" monitorInterval="60">
  <Properties>
    <Property name="app_name">myproject</Property>
    <Property name="logsdir">${env.CATALINA_HOME}/logs/${app_name}</Property>
    <Property name="myEnv">${env.ENV}</Property>
    <Property name="jvmEnv">${jvmrunargs:env}</Property>
    <Property name="springEnv">${spring:env}</Property>
    <Property name="sysEnv">${sys:env}</Property>
    <Property name="filename">${logsdir}/${app_name}.log</Property>
  </Properties>
  <Appenders>
    <Gelf name="gelf" host="tcp:graylog${myEnv}" port="12201" version="1.1" extractStackTrace="true"
          filterStackTrace="true" maximumMessageSize="4092"
          originHost="%host{fqdn}" additionalFieldTypes="app_name=String">
      <Field name="timestamp" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}" />
      <Field name="level" pattern="INFO" />
      <Field name="app_name" pattern="${app_name}"/>
    </Gelf>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="gelf" />
    </Root>
  </Loggers> 
</Configuration>

以上是我的 log4j 文件的简化版本。它的其他一切都在起作用。 属性 myEnv 根据系统环境变量正确评估为“Dev” 但是,如果您在同一个盒子上运行了多个此实例,则效果不佳,因此我一直在尝试使用 spring application.properties 文件或 java -Denv=Dev 变量将其传入。>

在我上面的配置中 jvmEnv、springEnv、sysEnv 都无法评估任何内容。它们只显示 ${jvmrunargs:env}

文字文本

这都是在控制台春季启动过程中看到的。 其他信息: log4j2 版本 2.10.0 Maven 构建

<dependency>
  <groupId>io.spring.platform</groupId>
    <artifactId>platform-bom</artifactId>
    <version>Cairo-RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
 </dependency>
 <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
 </dependency>
 <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
 </dependency>
 <dependency>
    <groupId>biz.paluch.logging</groupId>
    <artifactId>logstash-gelf</artifactId>
    <version>${logstash.version}</version>
 </dependency>

总结问题:

  1. 如何在 log4j2 中使用 java 的 D 参数或 Spring 的应用程序属性
  2. 我的语法问题在哪里?
  3. 有没有我没有考虑过的更简单的事情?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)