将SLF4J日志记录到ElasticBeanstalk

4

我该如何将我的Java Web应用程序在Tomcat 7上的日志路由到ElasticBeanstalk管理控制台或Eclipse插件中可见的日志中?我的应用程序编写为SLF4J API,并支持Logback。

我真的不想每次都要SSH进入每个盒子并跟踪日志文件;我一直在添加和删除实例,所以这会非常麻烦。

我的logback.xml看起来像这样:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="INFO" />
    <logger name="org.springframework.social" level="INFO" />
    <logger name="org.socialsignin" level="INFO" />

    <root level="ALL">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
2个回答

2
我使用slf4j-jdk14作为后端,当部署到ElasticBeanstalk时它能够正常工作。
以下设置将使您使用的所有其他库都记录到同一后端:
        <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
    </dependency>

希望这对你有用。

当我们从 Elastic Beanstalk 获取日志时,什么是将日志记录到同一后端?如果不是,日志存储在哪里?另外,它是否包含 sl4j 日志? - Anshul Goel

0

我强烈建议通过syslog将您的日志转发到papertrailapp.com。在jcabi-beanstalk-maven-plugin中了解更多相关信息。与您目前使用的方案相比,这种解决方案有许多优点,包括:1)日志更易于阅读,2)可以从多个服务器集成日志到一个地方,3)其他系统也可以记录到同一目标等。


Papertrail对堆栈跟踪的处理效果如何?基于Syslog的解决方案通常会为堆栈跟踪中的每一行创建单独的事件,或者截断堆栈跟踪... - ejain
1
Papertrail 会创建多个事件,最终看起来很丑陋,几乎无法阅读。 - yegor256

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接