aws弹性beanstalk应用程序日志记录和logback

bgtovc5b  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(508)

编辑:添加了图像(问题看起来像没有写入日志文件)
我正在64位amazonlinux2/4.1.3环境下运行的tomcat8.5和corretto11上的awslasticbeanstalk上运行一个springmvc(不是springboot)war文件。
除了我用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之后,我添加了一个带有配置文件的ebextensions文件夹,其中包含我的日志以及尾部日志和包,如下所示:

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/current/logs/applog.log 在使用的conf文件中 /var/log/current/logs/*.log ,而不是上面显示的内容,但它们也不起作用。所以我觉得我错过了一些有关登录到aws与logback。
我也乐于接受关于使用其他东西(log4j、java日志等)进行日志记录的建议。
编辑:终于找到了aws/eb乱七八糟的地方,并且能够通过ssh连接到环境中。我没有看到在var/log文件夹下创建java.log(或任何其他文件夹)。
为什么logback不写日志?那是日志路径吗 /var/log/java.log 不可用?

zphenhs4

zphenhs41#

这是我现在的工作,感谢与弹性豆茎,我也要求在logback接受的答案。
我想把我从这两个问题中学到的东西结合起来,因为这个问题是关于阅读日志的,而这个问题是关于写日志的,如果能在一个地方有完整的答案就好了。
以下是我对logback.xml和ebextensions配置文件所做的更改,如问题中所述:
(1) 在logback.xml中,更新 <file>/var/log/java.log</file><file>/var/log/tomcat/java.log</file> (2) 在ebextensions配置文件中,更新 /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中的该文件夹中,它也可以工作(还需要更新ebextensions配置文件以指向该位置)。
我花了几天时间才弄明白,希望这也能帮助别人。
p、 我拿出了 ConsoleAppender 从我的logback.xml来看,它什么也没做。

相关问题