有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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函数中,以便它开始记录调试语句。任何帮助都将不胜感激。谢谢


共 (2) 个答案

  1. # 1 楼答案

    为此,您可以使用ApacheMDC(org.Apache.log4j.MDC)。将以下代码行放在应用程序/程序的开头

    MDC.put("ENV_VARIABLE_NAME", value);
    
  2. # 2 楼答案

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

    因此,您可以在配置文件中使用类似的内容:"${env:VAR_NAME:-info}",其中-info将是默认的日志记录级别