首页 > 解决方案 > 使用 AWS Lambda (java) 中的环境变量更改 Log4j 级别

问题描述

我有使用 Java8 编码的 AWS Lambda。我正在使用 Log4j1.2.17 来满足日志记录需求:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>${log4j.version}</version>
</dependency>

使用 log4.properties 文件指定日志记录配置,如下所示:

# 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

如您所见,当前日志级别设置为“信息”。我想使用 AWS Lambda 环境变量更改日志级别,这样如果需要 Debug,设置一些 Lambda 环境变量,它应该反映在 Lambda 函数中,以便它开始记录 Debug 语句。任何帮助将不胜感激。谢谢

标签: javalog4jenvironment-variablesaws-lambdaruntime

解决方案


如果您可以迁移到 Log4j2(AWS Lambda 目前支持,您可以在AWS GitHub 上找到详细信息),有“查找”功能允许在 Log4j2 配置文件中使用环境变量:http://logging.apache。 org/log4j/2.x/manual/lookups.html#EnvironmentLookup

所以你可以在你的配置文件中使用这样的东西:"${env:VAR_NAME:-info}",其中-info将是默认的日志记录级别。


推荐阅读