在 aws lambda 上使用 Log4J2 进行日志记录 - 未找到类

2024-03-06

我正在尝试使用 Log4J2 日志记录,如 AWS 文档中所述:

https://docs.aws.amazon.com/lambda/latest/dg/java-logging.html#java-wt-logging-using-log4j2.8 https://docs.aws.amazon.com/lambda/latest/dg/java-logging.html#java-wt-logging-using-log4j2.8

<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.amazonaws.services.lambda.runtime.log4j2.LambdaAppender">
  <Appenders>
    <Lambda name="Lambda">
      <PatternLayout>
          <pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1}:%L - %m%n</pattern>
      </PatternLayout>
    </Lambda>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="Lambda" />
    </Root>
  </Loggers>
</Configuration>

Error但是,我在运行 lambda 时收到以下错误:(我删除了下面的时间戳以提高可读性)

ERROR Error processing element Lambda ([Appenders: null]): CLASS_NOT_FOUND
ERROR Unable to locate appender "Lambda" for logger config "root"

Tried我确保 log4J 库和log4j-core, log4j-api, aws-lambda-java-log4j2 and aws-lamda-java-core都在包里。


我也遇到了这个问题。事实证明,AWS 示例文档中存在拼写错误。

The packages in the <Configuration ..标签错误。

根据log4j插件配置文档 https://logging.apache.org/log4j/log4j-2.1/manual/configuration.html#ConfigurationSyntax the packages参数是一个包而不是一个类。

因此,将 log4j2.xml 配置修改为...

<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.amazonaws.services.lambda.runtime.log4j2">
  <Appenders>
    <Lambda name="Lambda">
      <PatternLayout>
          <pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1}:%L - %m%n</pattern>
      </PatternLayout>
    </Lambda>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="Lambda" />
    </Root>
  </Loggers>
</Configuration>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 aws lambda 上使用 Log4J2 进行日志记录 - 未找到类 的相关文章

随机推荐