用于Spring Boot应用程序的AWS Cloudwatch Logback Appender

时间:2017-09-18 14:27:15

标签: java spring-boot logback amazon-cloudwatch

我试图从我的Spring Boot应用程序直接将日志发送到Cloudwatch。 Logback Appender I'm using当然需要AWS凭证。 由于大多数开发人员在其本地计算机上没有AWS Credentials,并且只想根据logback-spring.xml配置登录文件。 由于缺少aws凭证,大多数测试在本地失败 有没有办法只针对特定的配置文件初始化logback appender? 这是logback-spring.xml的快照:

<!--  Configuration for your local environment -->
<springProfile name="${user.name}">
    <root level="DEBUG">
        <appender-ref ref="ROLLING_FILE" />
    </root>
</springProfile>

<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    ...
</appender>


<!-- Configuration for Development Environment --> 
<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="AWS_LOGS_DEV" />
        <appender-ref ref="ROLLING_FILE" />
    </root>
</springProfile>

<appender name="AWS_LOGS_DEV" class="ca.pjer.logback.AwsLogsAppender">
    <layout>
        <pattern>${FILE_LOG_PATTERN}</pattern>
    </layout>
    <logGroupName>/dev</logGroupName>
    <logStreamName>log_${date}</logStreamName>
</appender>

1 个答案:

答案 0 :(得分:0)

已经解决了。您只需要将appender解压缩到另一个logback文件:

<强>的logback-spring.xml

<!--  Configuration for your local environment -->
<springProfile name="${user.name}">
    <root level="DEBUG">
        <appender-ref ref="ROLLING_FILE" />
    </root>
</springProfile>

<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    ...
</appender>


<!-- Configuration for Development Environment --> 
<springProfile name="dev">
    <include resource="logback-prod.xml" />
</springProfile>

<强>的logback-prod.xml

<included>
    <root level="DEBUG">
        <appender-ref ref="AWS_LOGS_DEV" />
        <appender-ref ref="ROLLING_FILE" />
    </root>

    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
    <appender name="AWS_LOGS_DEV" class="ca.pjer.logback.AwsLogsAppender">
        <layout>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </layout>
        <logGroupName>/prod</logGroupName>
        <logStreamName>log_${date}</logStreamName>
        <maxBatchLogEvents>200</maxBatchLogEvents>
        <maxFlushTimeMillis>30000</maxFlushTimeMillis>
        <maxBlockTimeMillis>5000</maxBlockTimeMillis>
    </appender>
</included>