log4j를 사용하여 CSV 파일을 쓰려고합니다. CSV 헤더는 작성 될 때마다 로그 파일 맨 위에 작성해야합니다. 예를 들어, 이러한 압연 모든 파일은 로그 파일의 첫 번째 행으로 다음이 있어야합니다,log4j에서 롤오버가 발생했을 때 프로그래밍 방식으로 결정하는 방법은 무엇입니까?
log.0 타임 스탬프, 이름, 분 타임 스탬프
log.1 최대, 이름, 분,
최대 최대
log.2 타임 스탬프, 이름, 분, 그것은 I 헤더를 추가 할 수 있도록 롤오버가 발생되었는지를 판정 할 수 있습니까?
감사합니다.
P.S : 오픈 소스 CSV 작성기가 많이 있지만 소프트웨어에서 기존 로그 기능을 사용하고 싶기 때문에 사용하지 않는 것이 좋습니다.
. 예를 들어, 여러 클래스 로깅이 있거나 응용 프로그램이 다중 스레드되거나 분산되어있는 경우입니다. 당신이 이야기하고있는 이벤트 (로그 파일이 롤백되는 시점을 감지)가 존재하고 감지 할 수 있다고 가정 해 봅시다. 로그에 대한 쓰기가 정렬된다는 보장은 없습니다. 즉, 핸들러가 롤을 생성 한 실제 로그 항목보다 먼저 다음 로그 파일에 헤더를 추가 할 수 있습니다. 필자는 스크립트를 통해 수동으로 파일에 헤더를 삽입하는 것과 같은 다른 방법을 고수 할 것입니다. – Viccari
좋은 지적. 필자의 경우 CSV 로깅은 단일 클래스를 통과하므로 동기화가 보장됩니다. RollingFileAppender 소스를 살펴보면 롤오버가 발생했는지 확인하기위한 공개 API가 없습니다. 실제로 현재 로그 파일이 최대 값에 도달했는지, 복사본인지, 현재 파일을 삭제했는지, 지정된 파일 이름을 가진 다른 파일을 생성했는지, 그리고 로그 파일에 로그인하는지 여부 만 확인합니다. 그러나 RollingFileAppender.getFile()을 사용하여 appender가 사용하는 현재 파일 이름을 알 수 있으며 롤오버 발생 여부를 알기 위해 파일의 타임 스탬프를 확인할 수 있습니다. – partheinstein
그리고 응용 프로그램 외부에서 한 번에 모든 로그 파일에 헤더를 삽입하는 방법은 무엇입니까? – Viccari