PHP의 CloseLog ()는 idempotent이며 여러 번 호출 될 때 오류가 없지만 프로그램에서 자원을 반복적으로 정리하는 문제를 가릴 수 있습니다. 예를 들어, 함수는 반복적으로 호출되지만 CloseLog ()가 매번 실행되므로 리소스 관리 로직이 명확하지 않다는 것을 의미 할 수 있습니다.
문제 해결 방법 :
CloseLog ()를 여러 곳에서 직접 호출하지 않도록 로그 관련 호출을 캡슐화하십시오.
로그 연결 수명주기를 중앙에 제어하기 위해 로그 래퍼 클래스 또는 스키마 (예 : 싱글 톤)를 사용하십시오.
로그 시스템에는 syslog () 후에 버퍼가있을 수 있습니다. CloseLog ()가 즉시 닫히는 경우 () 로, 특히 높은 동시성 또는 특수 환경에서 로그를 제 시간에 작성하지 않을 수 있습니다.
문제 해결 방법 :
syslog ()를 호출 한 후 지연을 소개합니다 (테스트 및 검증에만 사용되며 생산에 권장되지 않음).
스크립트 끝에서 또는 파괴 단계에서 CloseLog ()를 호출하십시오.
<span><span><span class="hljs-title function_ invoke__">openlog</span></span><span>(</span><span><span class="hljs-string">"example"</span></span><span>, LOG_PID | LOG_PERROR, LOG_LOCAL0);
</span><span><span class="hljs-title function_ invoke__">syslog</span></span><span>(LOG_INFO, </span><span><span class="hljs-string">"테스트 로그"</span></span><span>);
</span><span><span class="hljs-comment">// 즉시하지 마십시오 closelog(),스크립트 끝에서 균일하게 호출해야합니다.</span></span><span>
</span></span>
때로는 closeLog ()을 올바르게 호출하더라도 로그가 쓰여지지 않습니다. 가능한 이유는 OpenLog ()가 잘못된 로그 유형 (기능)을 사용하거나 시스템이 해당 유형에 대한 로그 권한을 활성화하지 않기 때문입니다.
문제 해결 방법 :
OpenLog () 에 사용 된 시설이 시스템에서 지원되는지 확인하십시오.
시스템의 Syslog 구성 파일 (예 : /etc/rsyslog.conf 또는 /etc/syslog.conf )에서 해당 기능이 활성화되어 있는지 확인하십시오.
로그 파일 권한을 확인하거나 로거 명령을 사용하여 수동으로 테스트하십시오.