2011-12-29 2 views
1

파이썬의 구문 분석 로그에 tailer을 사용하지만 서버의 로그 회전이 손상된 경우 오류가 발생합니다. 대신에 어떤 결정을 사용할 수 있습니까? tail -f in popen - 파이썬적인 방식이 아닙니다.python, tailer 및 logrotate

+1

주위에 내 하나를 사용, 당신은'꼬리 -F'를 사용하지'꼬리 -f'를 필요 통지 파일 회전. – sarnold

답변

0

로그 회전 기능을 추가하는 것이 어렵지 않습니다. 예를 들어, 당신이있는 경우 :

for line in tailer.follow(open('test.txt')): 
    print line 

주기적으로 다음 파일 이름의 존재를 확인하는 기능에 콜백을 추가 할 수 있습니다. 존재하는 경우 루프에서 빠져 나와 새 파일에서 시작하십시오. logrotate에 이벤트시

0

다음 일이 발생합니다

  1. 로그 파일의 아이 노드가 변경되지 않았습니다하지만 로그는 (예를 들어 log.out.1)
  2. logrotate에이 같은 이름의 새 파일을 만들어 새 이름으로 이름이 바뀌 었습니다 (log.out) (나는 잘 모르겠다 :-)

테일러 모듈은 여전히 ​​오래된 파일 아이 노드를 볼 것입니다.

로그를 올바르게 기록하려면 로그 파일의 inode 값을 모니터링해야합니다. 이것이 '꼬리 -F'입니다.

당신이 소스에서 볼 수 있듯이

는 쇼핑몰을 운영 중이고 모듈은 소스 파일의 logrotation을 다음과 설계되지 않은 : 그것은

http://code.activestate.com/recipes/157035/

조리법

를 기반으로하고 작업에 대한 unuseful입니다.

소스 제조법에 대한 의견을 참조하십시오.

-

P.S. -F` 것`- 또는 래퍼 '꼬리 -f': 덧붙여

http://code.activestate.com/recipes/577398-tail-f-with-inode-monitor/