ログバックを使用したAWSElasticBeanstalkアプリケーションのロギング
編集:画像を追加しました(問題はログファイルが書き込まれていないようです)
'Tomcat 8.5 with Corretto11が64ビットAmazonLinux 2 /4.1.3'環境で実行されているAWSElasticBeanstalkで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
が、どちらも機能しませんでした。そのため、Logbackを使用したAWSへのロギングについて何かが足りないように感じます。
また、他の何か(log4j、javaロギングなど)でのロギングに関する(作業中の)提案も受け付けています。
編集:最終的にaws / ebの混乱を理解し、環境にSSH接続することができました。var / logフォルダー(またはその他のフォルダー)の下に作成されたjava.logが表示されません。
ログバックがログを書き込まないのはなぜですか?そのログパス/var/log/java.log
は使用できませんか?

回答
Logback with Elastic Beanstalkで受け入れられた回答のおかげで、これは今私にとってはうまくいっています。
この質問はログの読み取りに関するものであるのに対し、この質問はログの書き込みに関するものであるため、ここで両方の質問から学んだことを組み合わせたいと思います。完全な回答が1か所にあると便利です。
以下は、質問で述べたように、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
ユーザーがアクセスできるもう1つのフォルダーは、アプリ用に作成されたフォルダーです/var/app
。したがって、ログファイルの場所がlogback.xmlのそのフォルダー内に設定されている場合は、同様に機能します(その場所を指すように、ebextensions構成ファイルを更新する必要もあります)。
最終的にこれを理解するのに数日かかりました。それが他の人にも役立つことを願っています。
PS ConsoleAppender
logback.xmlからを取り出しましたが、何もしていませんでした。