使用AWS Lambda(java)中的环境变量更改Log4j级别
我使用Java8编写了AWS Lambdas。我使用的是Log4j1。2.17对于日志记录需求:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
日志配置是使用log4指定的。属性文件如下所示:
# Root logger option
log4j.rootLogger=INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
如您所见,当前日志级别设置为“info”。我希望使用AWS Lambda环境变量更改日志级别,以便在需要调试时,设置一些Lambda环境变量,并将其反映在Lambda函数中,以便它开始记录调试语句。任何帮助都将不胜感激。谢谢
# 1 楼答案
为此,您可以使用ApacheMDC(org.Apache.log4j.MDC)。将以下代码行放在应用程序/程序的开头
# 2 楼答案
如果您可以迁移到Log4j2(AWS Lambda当前支持它,您可以找到有关AWS GitHub的详细信息),那么有一个“查找”功能,它允许在Log4j2配置文件中使用环境变量:http://logging.apache.org/log4j/2.x/manual/lookups.html#EnvironmentLookup
因此,您可以在配置文件中使用类似的内容:
"${env:VAR_NAME:-info}"
,其中-info
将是默认的日志记录级别