提问者:小点点

AWS弹性豆茎应用日志


编辑:添加图像(问题看起来没有写入日志文件)

我正在运行一个Springmvc(不是springboot)WAR文件AWS弹性豆茎上的Tomcat 8.5与Corretto 11运行在64位亚马逊Linux2/4.1.3环境。

一切都按预期工作,除了我使用slf4j/logback编写的应用程序日志。

以下是我的logback. xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE xml>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="APPLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/var/log/java.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/var/log/java_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            <!-- keep 14 days' worth of history -->
            <maxHistory>14</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the File size reaches 10MB -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%thread][%X{remoteHost}] %-5level %c{1} - %msg%n</pattern>
            <!-- <pattern>%d %-5p %c{1} - %m%n</pattern> -->
        </encoder>
    </appender>
    <logger name="com.personal.service.layer.mongodb" level="INFO"
        additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <logger name="org.springframework" level="INFO"
        additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <logger name="spring.web" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </root>

</configuration>

搜索google/stackoverflow后,我添加了一个带有配置文件的ebendsions文件夹,以包含我的日志以及尾部日志和捆绑包,如下所示:

files:
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/*.log

  "/opt/elasticbeanstalk/tasks/taillogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/*.log

经过网上的一些研究,我尝试了一些其他的组合。例如,我尝试将logback. xml中的日志文件设置为/var/app/当前/logs/applog.log,并在conf文件中使用/var/log/当前/logs/*.log,而不是上面所示的,但它们也不起作用。所以我觉得我缺少了一些关于使用LogbackAWS日志的东西。

我也愿意接受关于使用其他东西(log4j,java日志记录等)进行日志记录的(工作)建议。

编辑:终于弄清楚了aws/eb的混乱,并且能够ssh到环境。我没有看到在文件夹var/log(或任何其他文件夹)下创建的java. log。

为什么logback不写日志?那个logpath/var/log/java. log不可用吗?


共1个答案

匿名用户

这对我来说很有效,这要归功于我在登录弹性豆茎中得到的公认答案,我也问了这个问题。

我想把我从这两个问题中学到的东西结合起来,因为这个问题是关于阅读日志的,而那个问题是关于写日志的,在一个地方有完整的答案会很好。

以下是问题中提到的我对logback. xml和eb扩展配置文件所做的更改:

(1)在logback. xml中,update

(2)在eb扩展配置文件中,将/var/log/*. log更新为/var/log/tomcat/*.log(这是可选的,即使保留为/var/log/*.log也可以工作)

它在/var/log文件夹中不起作用的原因是因为该文件夹的权限。当我ssh到该文件夹时,我发现该文件夹的权限仅限于root用户。

但是,当应用程序使用Tomcat运行时,它以用户tomcat的身份运行,该用户没有写入该文件夹的权限。但是,用户tomcat有权写入/var/log/tomcat文件夹。

我发现tomcat用户有权访问的另一个文件夹是为应用程序/var/app创建的文件夹。因此,如果在logback. xml中的该文件夹中设置了日志文件位置,它也可以工作(它还需要更新eb扩展配置文件以指向该位置)。

我花了几天时间才最终弄清楚这一点,希望它也能帮助其他人。

附言:我从logback. xml中取出了ConsoleAppender,它什么也没做。