Apache 如何让log4j.properties读取环境变量?
我的应用程序有多个环境(dev/qa/prod)。因此,我想根据环境区分日志转换模式。我有一个env变量集,它存储应用程序运行它的环境。但是,如何让log4j.properties读取这个env变量呢 这是我的当前属性文件的外观:Apache 如何让log4j.properties读取环境变量?,apache,logging,clojure,log4j,Apache,Logging,Clojure,Log4j,我的应用程序有多个环境(dev/qa/prod)。因此,我想根据环境区分日志转换模式。我有一个env变量集,它存储应用程序运行它的环境。但是,如何让log4j.properties读取这个env变量呢 这是我的当前属性文件的外观: log4j.rootLogger = INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.P
log4j.rootLogger = INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss}] my-api.%-5p: %m%n
我已经尝试了遵循log4j查找文档,但这仍然没有在我的日志文件中包括环境
log4j.appender.stdout.layout.ConversionPattern= [%d{yyyy-MM-dd
HH:mm:ss}] ${env:ENVIRONMENT}-my-api.%-5p: %m%n
输出如下所示:
[2018-01-22 14:17:20] -my-api.INFO : some-message.
[2018-01-22 14:17:20] dev-my-api.INFO : some-message.
但我希望它看起来像这样:
[2018-01-22 14:17:20] -my-api.INFO : some-message.
[2018-01-22 14:17:20] dev-my-api.INFO : some-message.
您也可以尝试一种模式,它已经成为Luminus和其他框架中的某种标准。您可以创建一个
env
目录,其中包含prod/dev/test
子文件夹以及一些额外的代码和资源。在lein项目中,除了默认路径外,还可以为每个配置文件指定查找这些文件的位置
因此,您有三种不同的日志设置。它们中的每一个都将根据您正在做的事情进行加载。当只从env/dev/resources/log4j.properties
开发代码时,当运行测试时,从env/test/resources/log4j.properties
开发代码时
以下是一个例子:
$ tree env
.
├── dev
│ └── resources
│ └── log4j.properties
├── prod
│ └── resources
│ └── log4j.properties
└── test
└── resources
└── log4j.properties
项目.clj中的一些位
:
:profiles {:dev {:plugins [[autodoc/lein-autodoc "1.1.1"]]
:dependencies [[org.clojure/clojure "1.8.0"]
[log4j/log4j "1.2.17"]]
:resource-paths ["env/dev/resources"]}}
对于
test
概要文件,您可能希望同时指定dev
和test
路径。您还可以尝试一种模式,该模式已成为Luminus和其他框架中的某种标准。您可以创建一个env
目录,其中包含prod/dev/test
子文件夹以及一些额外的代码和资源。在lein项目中,除了默认路径外,还可以为每个配置文件指定查找这些文件的位置
因此,您有三种不同的日志设置。它们中的每一个都将根据您正在做的事情进行加载。当只从env/dev/resources/log4j.properties
开发代码时,当运行测试时,从env/test/resources/log4j.properties
开发代码时
以下是一个例子:
$ tree env
.
├── dev
│ └── resources
│ └── log4j.properties
├── prod
│ └── resources
│ └── log4j.properties
└── test
└── resources
└── log4j.properties
项目.clj中的一些位
:
:profiles {:dev {:plugins [[autodoc/lein-autodoc "1.1.1"]]
:dependencies [[org.clojure/clojure "1.8.0"]
[log4j/log4j "1.2.17"]]
:resource-paths ["env/dev/resources"]}}
对于
测试
配置文件,您可能希望同时指定dev
和test
路径。您检查了吗?log4j的哪个版本?我使用的版本是:1.2.17。可能重复我在22296275中尝试了建议,但这并没有解决我的问题。您检查了吗?log4j的哪个版本?我使用的版本是:1.2.17。可能重复我尝试了22296275中的建议,但这并没有解决我的问题。