2014-12-18 2 views
5
-Xss256k 
-Djava.net.preferIPv4Stack=true 
-Dfile.encoding=UTF-8 
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:CMSInitiatingOccupancyFraction=75 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:+DisableExplicitGC 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps 
-XX:+PrintClassHistogram 
-XX:+PrintClassHistogramBeforeFullGC 
-XX:+PrintTenuringDistribution 
-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintPromotionFailure 
-XX:PrintFLSStatistics=1 
-verbose:gc 
-XX:GCLogFileSize=64m 
-XX:NumberOfGCLogFiles=2 
-XX:+UseGCLogFileRotation 
-Xloggc:./logs/gc.log 

위의 내용은 응용 프로그램에서 전달하는 JAVA_OPTS의 전체 목록입니다. 문제는 애플리케이션이 시작될 때까지 로그 디렉토리가 존재하지 않으면 gc.log 파일이 생성되지 않는 경우입니다. 하지만 응용 프로그램이 시작될 때까지 logs 디렉터리가 있는지 확인하면 gc.log가 항상 만들어집니다.처음으로 경로가없는 경우 Xloggc가 로그 파일을 만들지 않습니다.

GC가 발생하면 log4j 프레임 워크에서 logs 디렉토리를 만들기 전에 안전하게 Xloggc가 실패 할 것이라고 가정합니다. 수동으로 로그 디렉토리를 미리 작성하는 것 이외의 다른 해결책이 있습니까?

답변

2

예, -Xloggc의 경우 로그 파일을 만들 때 항상 해당 디렉터리가 있어야합니다. 디렉토리를 수동으로 만드는 것이 가장 쉬운 방법입니다. 대부분의 프로젝트에서 로그 디렉토리를 항상 사용할 수 있습니다. 그러나 로그를 지우려면 logs 디렉토리의 모든 파일을 삭제하지만 디렉토리는 그대로 두는 것이 좋습니다.

로그 디렉토리를 만든 다음 서버를 시작하기위한 쉘 스크립트를 작성할 수도 있지만 모든 서버 재시작을 위해 표준 시작 스크립트 대신이 스크립트를 사용해야합니다.

관련 문제