2009-10-02 3 views
3

비활성화 자바 로그 :는 내 응용 프로그램에 로그인 할 java.util.logging.Logger를 사용하여 회전

FileHandler fh=new FileHandler(this.todayFileName, 0, 1, true); 

    fh.setFormatter(new SimpleFormatter()); 

    Logger.getLogger(rootLogger.getName()).setLevel(Level.ALL); 

    Logger.getLogger(rootLogger.getName()).addHandler(fh); 

하지만 그 로그 회전을 제외하고 잘 작동 않습니다이 활성화됩니다.

와 나는 파일을 가져 :

run.log run.log.1 run.log.2

내가 원하는 것은 사용할 수없는 회전, 하나의 로그 파일을 얻을 수 있습니다.

어떻게하면됩니까?

+6

필수 대답 : java.util.logging을 사용하지 마십시오. 끔찍합니다. 다른 것을 사용하십시오. 다른 건. – skaffman

답변

1

, java.util.logging의는 run.log run.log.1 run.log.2

을 같은 많은 로그 파일을 만듭니다 그리고 당신은 확신 이 문제가 이미 발생했기 때문에 응용 프로그램이 제대로 닫혔습니다. 내 응용 프로그램이 제대로 닫히지 않았기 때문에 응용 프로그램을 시작할 때 myApplication.log.1이 작성되었습니다.

-1

이 값을 사용해야하는 경우 0 대신 Integer.MAX_INT를 사용하십시오. 실제로 0을 0 바이트로 처리 할 수 ​​있으므로 초기화 할 때마다 회전이 발생할 수 있습니다.

BTW '하나의 파일, 회전 없음'을 원한다면 파일 이름을 취하는 1-arg 생성자를 사용하면 올바른 작업을 수행 할 수 있습니다. 당신은 같은 시간에 두 번 이상 동일한 응용 프로그램을 실행하면

+0

이것이 작동하지 않았습니다! 다른 제안? – Attilah

+0

FileHandler javadoc에서 : "limit는 하나의 파일에 쓸 수있는 대략적인 최대 크기 (바이트)를 지정합니다.이 값이 0이면 제한이 없습니다." 그래서 0으로 설정하면 무제한 회전을 일으키지 않고 한계를 비활성화해야합니다. –

+0

이 중 하나가 작동하지 않습니다 – mvg

1

FileHandle 생성자를 사용하려면 파일 이름과 부울 또는 파일 이름 만 사용하는 생성자를 사용해야합니다 , 이런 식으로 로테이션없이 하나의 로그 파일을 얻게 될 것입니다.

감사합니다. Luis.

+0

이 나를 위해 작동합니다. 예 :'Handler fh = new FileHandler ("output.log", 1048576,1, true);'. 하나의 파일 만 만들어지고 추가되며 1048576 바이트마다 지워집니다. – atomicules

1

이미 주어진 답변 외에, 나는 로테이션을 비활성화하려는 당신의 질문에 의문을 가질 것입니다. 디스크 공간이 부족한 것처럼 로그를 회전시키는 표준적인 절차는 매우 좋은 이유가 있습니다. 나는 당신이 그것을 끄고 그 필요성을 제거하기를 바라는 이유를 조사해 보라고 말할 것입니다. 예 : 로그 정보를 쉽게 찾을 수 있기를 원한다면 (예 : splunk 또는 무엇이든) 사용자를 위해 로그 정보를 쉽게 처리 할 수있는 패키지를 고려해야하며 회전 된 로그와 함께 잘 작동 할 수 있습니다. 또한 로그 로테이션이 고도로 구성 가능하기 때문에 로테이션 설정을 변경하고자 할 수도 있습니다. 또한 그 목적을 위해 다른 곳으로 보내지는 로그에서 필요한 정보를 얻고 회전하는 로그를 남겨 둘 수 있다고 생각하십시오.

그리고 운영 체제/로그 순환 구성 시스템에 따라 아마도 운영 체제에서 바로 회전을 해제하고 코드에 대해 걱정하지 마십시오.

+0

답변 해 주셔서 감사합니다. 내 문제는 이것으로, 내 트래픽이 높은 웹 서비스 응용 프로그램이며이를 사용하여 로깅은 log.1, log.2 등의 이름으로 많은 파일을 만들고 클라이언트는 좋지 않다고 느낀다. 그래서 이것을 비활성화하는 옵션을 찾았습니다.또한 로그 파일 이름으로 현재 날짜를 추가하여 하루에 하나의 로그 파일을 생성하도록 이미 webservice를 설정했습니다. – mvg

+0

운영체제 (Red Hat Linux)에서이 기능을 비활성화하는 방법을 알고 있습니까? – mvg

+0

보통 맨 페이지가 도움이됩니다. 예 : http://linuxcommand.org/man_pages/logrotate8.html 그리고 이것이 좋지 않다고 생각하는 클라이언트에 대해서는 어떨까요? 그들은 유닉스 시스템 관리에 대해 무엇을 알고 있는가? 그들의 제안은 무엇입니까? 로그 교체는 잘 알려져 있고 작동하는 설치 및 절차/구성입니다. 그들이 실제로하는 일을 실제로 이해하고 있습니까? –

관련 문제