java - 使用 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 语句。任何帮助将不胜感激。谢谢
解决方案
如果您可以迁移到 Log4j2(AWS Lambda 目前支持,您可以在AWS GitHub 上找到详细信息),有“查找”功能允许在 Log4j2 配置文件中使用环境变量:http://logging.apache。 org/log4j/2.x/manual/lookups.html#EnvironmentLookup
所以你可以在你的配置文件中使用这样的东西:"${env:VAR_NAME:-info}"
,其中-info
将是默认的日志记录级别。
推荐阅读
- android - Android 通知:使用哪些标签/ID 对来确保显示所有通知?
- python - 将 wstring 指针传递给用 C++ 编写的第 3 方 SO
- elasticsearch - 将停用词和同义词上传到 Elasticsearch 云服务器
- excel - Avoid counting unfiltered results using COUNTIFS formula
- python - 我如何打印嵌套字典?
- python - 如何模拟使用 Flask 和 SQL ALChemy 构建的 REST API 的单元测试
- jwt - 授权属性为asp.net核心中的控制器授权任何JWT令牌?
- javascript - 附加不起作用,也没有显示错误
- laravel - 在 Fractal 的 Transformers 中包含来自数据透视表的相关表
- android - Pulling single row from SQLDatabase