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

dva*_*urg 5 java amazon-web-services log4j2 aws-lambda

我正在尝试使用AWS docs中描述的Log4J2日志记录:

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>
Run Code Online (Sandbox Code Playgroud)

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

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

试过 我确信,log4j的库和log4j-core,log4j-api,aws-lambda-java-log4j2aws-lamda-java-core都在包中.

Kar*_*arl 10

我也有这个问题.事实证明,AWS示例文档中存在拼写错误.

packages<Configuration ..标签是错误的.

根据log4j 插件配置文档,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>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.干杯

  • 截至今天的官方文档 [https://docs.aws.amazon.com/lambda/latest/dg/java-logging.html](https://docs.aws.amazon.com/lambda/latest/dg/ java-logging.html) 在“Configuration”标签中没有“packages”属性。仅在添加“packages”属性后,它才对我有用。多亏了OP,否则我自己永远也想不出来。 (12认同)