다음 설정을 사용하여 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를 실행해야 합니다(이름이 변경되었으므로).