Elastic Beanstalk를 사용한 로그 백

Nov 28 2020

Elastic Beanstalk로 애플리케이션 로그를 로깅하는 데 문제가 있습니다. '64 비트 Amazon Linux 2 / 4.1.3에서 실행되는 Corretto 11이있는 Tomcat 8.5 '환경의 AWS Elastic Beanstalk에서 spring mvc (springboot 아님) WAR 파일을 실행하고 있습니다.

이전에는 응용 프로그램에서 작성한 로그를 검색 할 수 없다는 것이 문제라고 생각했습니다. 그러나이 질문 ( AWS Elastic Beanstalk Application Logging with Logback )의 제안을 따른 후 로그를 보는 데 문제가 없음을 확인할 수있었습니다. 실제 문제는 로그가 기록되지 않는다는 것입니다. 인스턴스에 ssh하고 로그 파일이 / var / log 디렉토리에 생성되지 않았습니다.

참고로 다음은 내 logback 파일 어 펜더입니다 (링크 된 질문의 전체 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을 사용하고 있습니다. 응용 프로그램 로그는 Tomcat 서버에서 로컬로 동일한 전쟁을로드 할 때 예상대로 작동합니다.

이제 궁금합니다 (1) 로그 백이 Elastic Beanstalk에서 작동합니까? (2) 그렇다면, /var/logs디렉터리에 로그를 작성하려면 특별한 (권한?, 기타 종속성)이 필요 합니까?

답변

1 Marcin Nov 28 2020 at 08:34

의견을 기반으로합니다.

이 문제는 권한으로 인해 발생했습니다. 기본적으로 EB의 사용자 애플리케이션은에 액세스 할 수 없습니다 /var/logs.

해결책은 로그를에 배치 할 수 있도록 권한을 수정하는 것이 었습니다 /var/log/tomcat.