2012-09-25 3 views
1

bash 스크립트의 특정 경로에있는 로그 파일에 어떻게 메시지를 기록합니까?bash 스크립트의 특정 경로에있는 로그 파일에 메시지를 기록하는 방법

본래의 구현은 같은 명령이 될 것이다 :

echo My message >>/my/custom/path/to/my_script.log 

그러나 이것은 아마도 많은 단점 (예를 들어 어떤 로그 회전)를 갖는다. 'logger'명령을 사용할 수는 있지만 사용자 정의 경로에서 로그를 지원하지 않으며 사용자 정의 로그 파일을 사용할 수있는 bash 스크립트가 많은 경우 구성하기 쉽지 않습니다. 루비 같은 스크립팅 언어에서

이 모든 아주 쉽게 : https://github.com/rudionrails/yell/wiki/101-the-datefile-adapter 나는이 루비 라이브러리를 기반으로 내 자신의 logger 명령을 내 bash는 스크립트에서 호출 할 수 있지만, 나는 잘 알려진 솔루션이 이미 존재 같아요 쉘 스크립트에 대해 비슷한 동작을 제공합니까? 당신은 단순히 그런 식으로 떠들썩한 파티 스크립트에서 로그 파일에 텍스트를 추가 할 수 있습니다

+0

'logger'는 데이터를 syslog로 보냅니다. syslog 구성은 사용자가 선택한 로그 파일로 syslog 구성을 분할하여 처리 할 수 ​​있습니다. Syslog는 로그를 회전시키지 않습니다. 일반적으로 logrotate는 모든 파일에서 사용하도록 구성 할 수 있습니다. – jordanm

+0

당신이 'simply_log -f ~/log/foo.log My message'와 같은 것을 실행하는 해결책이 있는지 궁금 해서요.이 파일에 메시지를 기록하고 필요한 경우 로그 파일을 회전시킵니다. (즉, 현대 스크립팅 언어에서 명령을 로깅하는 것과 비슷한 동작). – Erik

+0

서버의 사용자 계정으로 제한되지 않는 한 시스템 전체의 logrotate 프로그램을 사용하는 IMO를 사용하는 것이 좋습니다. 특히 가장 인기있는 로깅 라이브러리 중 하나에 [치명적인 버그]가있는 경우 (http://juliusdavies.ca/logging.html#rotate) – jordanm

답변

5

:

echo "My message" >> /my/custom/path/to/my_script.log 

회전이 logrotate에 의해 처리됩니다, 당신은 단지의/etc/logrotate에에서의 .conf에 설정을 추가해야합니다 .conf. 설정은 꽤 자명하며 매뉴얼 페이지도 상당히 도움이됩니다.하지만 짧은 시간에 주 단위로 회전하고 4 주 분량의 로그를 압축 된 형식으로 유지하고 마지막으로 회전 할 때 새로운 빈 로그를 만들려면 간단하게 의 .conf에 넣어 :

/my/custom/path/to/my_script.log { 
    rotate 4 
    weekly 
    create 
    compress 
    endscript 
} 

이 많은 다른 옵션, 당신은 man 페이지와 같은 회전에서 명령을 실행, 로그 파일을 이메일로 (남자 logrotate에)에서 확인하실 수 있습니다 파일이 특정 크기에 도달하면 회전 등.

+0

+1 감사합니다. 귀하의 답변은 매우 간단하고 명확합니다. – shgnInc

관련 문제