Tomcat 로그 파일을 Logrotate

Tomcat 로그 파일을 Logrotate

다음 설정을 사용하여 Tomcat 로그를 작성하고 있습니다.

  • AccessLogValve로그 구성에 사용server.xml

    Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/access"
    prefix="access" suffix=".log" pattern="common" rotatable="false"
    
  • logrotate로그 파일을 매일 교체하고 오래된 로그 파일을 삭제하는 데 사용됩니다 .

    /app/logs/access/access.log {
        daily
        dateext
        missingok
        rotate 14
        maxage 14
        compress
        delaycompress
        dateyesterday }
    

logrotate이상한 점은 예를 들어 매일 로그 파일 이름이 변경되고 access.log-20171222새 로그 파일이 생성된다는 것입니다. 그러나 Tomcat은 이름이 변경된 파일에 여전히 로그를 기록합니다.access.log

copytruncate현재 해결 방법은 에 옵션을 추가하는 것입니다 logrotate. 그러나 이 옵션을 사용하면 잘라낼 때 일부 로그가 손실될 수 있습니다.

누구든지 더 나은 솔루션을 제안할 수 있습니까?

감사해요.

답변1

~에 따르면이것문서의 경우 항상 동일한 파일에 쓰지 않도록 회전 가능 옵션을 true(기본값)로 유지해야 합니다. 파일 이름 문자열의 형식을 고정된 값으로 지정하여 날짜가 포함되지 않도록 할 수도 있습니다. 새 로그가 마지막 로그를 덮어쓸 위험이 없도록 내부 회전 전에 logrotate를 실행해야 합니다(이름이 변경되었으므로).

관련 정보