首页 > 解决方案 > 使用 Log4J appender 在 AWS Cloudwatch 中存储应用程序日志

问题描述

我正在尝试将应用程序级日志存储在来自 Java Web 应用程序的 AWS Cloudwatch 日志中。

我的示例 Java Web 应用程序已经具有 Log4J 实现。因此,无需编写 AWS SDK 代码,我只想将日志推送到 Cloudwatch。我刚刚遇到了 Log4J cloudwatch appender。

关注此链接但不确定如何配置 AWS 身份验证(访问/密钥、区域) https://dzone.com/articles/announcing-log4j-aws-appenders

log4j.properties

log4j.rootLogger=WARN, console

log4j.logger.org.apache.http=ERROR
log4j.logger.com.amazonaws=ERROR
log4j.logger.com.mkyong=ERROR
log4j.additivity.com.mkyong=true

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

log4j.appender.cloudwatch=com.kdgregory.log4j.aws.CloudWatchAppender
log4j.appender.cloudwatch.layout=org.apache.log4j.PatternLayout
log4j.appender.cloudwatch.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

log4j.appender.cloudwatch.logGroup=ExampleCloudwatchLog
log4j.appender.cloudwatch.logStream={startupTimestamp}-{sequence}
log4j.appender.cloudwatch.batchDelay=2500
log4j.appender.cloudwatch.rotationMode=daily

看起来凭据不是从我使用配置的本地计算机读取的aws configure

注意:应用程序也将部署在 AWS 或非 AWS 环境中。所以也不确定是否设置 AWS IAM 角色。

任何人都可以帮助我传递 AWS 的凭据吗?

标签: javaamazon-web-serviceslog4japache-commons-logging

解决方案


感谢您宝贵的重播@kdgregory。

故障排除指南对我帮助很大。

使用以下启用调试,发现依赖关系未解决。

log4j.debug=true

最后,我通过在 pom.xml 中添加 AWS ADK 日志依赖项来实现。工作正常。

    <!-- 1/2 For AWS Cloudwatch Appender -->
    <dependency>
        <groupId>com.kdgregory.log4j</groupId>
        <artifactId>aws-appenders</artifactId>
        <version>1.3.0</version>
    </dependency>
    <!-- 2/2 For AWS Cloudwatch Appender -->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-logs</artifactId>
        <version>1.11.130</version>
    </dependency>

谢谢,


推荐阅读