代码之家  ›  专栏  ›  技术社区  ›  Sach

使用AWS Lambda(java)中的环境变量更改Log4j级别

  •  5
  • Sach  · 技术社区  · 6 年前

    我使用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 回复  |  直到 6 年前
        1
  •  5
  •   Ivan Koryshev    6 年前

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

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

        2
  •  -2
  •   meeza    6 年前

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

    MDC.put("ENV_VARIABLE_NAME", value);