在AWS Lambda中使用环境变量更改Log4j级别(Java)的更改日志

5

我有使用Java8编写的AWS Lambdas。我正在使用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

如您所见,当前日志级别已设置为“info”。我希望使用 AWS Lambda 环境变量更改日志级别,以便在需要调试时设置一些 Lambda 环境变量,并且它应该反映在 Lambda 函数中,以便开始记录调试语句。任何帮助将不胜感激。谢谢。

2个回答

5

谢谢您的回复,您是指这样的代码应该可以工作吗?<Loggers> <Root level="${env:VAR_NAME:-info}"> <AppenderRef ref="Lambda" /> </Root> </Loggers> - Sach
是的,没错。请注意,在 AWS Github 上的 Log4j2 配置文件中有一个拼写错误 -- "Configuration" 标签中应该是包名而不是类名(详见此问题)。 - Ivan Koryshev

-3
你可以使用Apache MDC(org.apache.log4j.MDC)来实现此目的。在应用程序/程序的开头放置以下代码行。
MDC.put("ENV_VARIABLE_NAME", value);

这不会改变日志级别。我认为它只能在ConversionPattern中使用,是这样吗?我该如何使用它来更改log_level?我尝试了下面的代码,但没有起作用: log4j.rootLogger=%X{log_level},stdout - Sach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接