ElasticBeanstalkによるログバック

Nov 28 2020

ElasticBeanstalkでアプリケーションログを記録するのに問題があります。'Tomcat 8.5 with Corretto11が64ビットAmazonLinux 2 /4.1.3'環境で実行されているAWSElasticBeanstalkでspringmvc(springbootではない)WARファイルを実行しています。

以前は、アプリケーションによって書き込まれたログを取得できないことが問題だと思っていました。ただし、この質問(AWS Elastic Beanstalk Application Logging with Logback)の提案に従った後、ログの表示に問題はないと判断できました。実際の問題は、ログが書き込まれないことです。インスタンスにSSHで接続しましたが、ログファイルが/ var / logディレクトリに作成されませんでした

参考までに、ここに私のログバックファイルアペンダー(リンクされた質問の完全なlogback.xml)があります:

<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>

アプリはslf4j-api-1.7.6、logback-classic-1.2.3、logback-core-1.2.3を使用しています。同じwarをTomcatサーバーにローカルにロードすると、アプリケーションログは期待どおりに機能します。

だから今私は疑問に思っています(1)ログバックはElastic Beanstalkで動作しますか?(2)はいの場合、/var/logsディレクトリにログを書き込むために何か特別なもの(権限?、その他の依存関係)が必要ですか?

回答

1 Marcin Nov 28 2020 at 08:34

コメントに基づいています。

この問題は権限が原因で発生しました。デフォルトでは、EB上のユーザーアプリケーションはにアクセスできません/var/logs

解決策は、ログをに配置できるようにアクセス許可を変更することでした/var/log/tomcat