시스템 로깅에 PHP를 사용하는 경우 CloseLog () 함수는 이전에 OpenLog () 에서 열린 시스템 로그 연결을 닫는 데 사용됩니다. 올바른 호출 CloseLog ()는 로그 데이터가 시스템 로그에 완전히 기록되도록 할 수 있지만 실제 개발에서는 로그 레코드의 무결성을 보장하기 위해 일부 세부 사항에주의를 기울여야합니다.
이 기사는 CloseLog ()를 호출 할 때 로그의 무결성과 보안을 보장하는 방법에 중점을 둘 것입니다.
php의 closeLog () 함수는 OpenLog () 를 통해 열린 시스템 로그 연결을 닫는 데 사용됩니다. OpenLog ()을 사용하면 로그 식별자, 옵션 및 시설을 정의 할 수 있으며 syslog ()는 로그를 작성하는 데 사용되며 CloseLog ()는 로그 연결을 닫고 리소스를 해제합니다.
예:
<?php
openlog("myapp", LOG_PID | LOG_PERROR, LOG_USER);
syslog(LOG_INFO, "이것은 테스트 로그입니다");
closelog();
?>
여기서 CloseLog ()를 호출 한 후 시스템은 캐시 된 모든 로그 데이터를 새로 고치고 연결을 닫습니다.
모든 로그를 작성한 후 호출 : 일반적으로 모든 로그 쓰기를 완료 한 후 CloseLog () 호출하는 것이 좋습니다. 로그 쓰기 프로세스 중에 자주 호출되면 효율이 감소합니다.
스크립트가 실행될 때 호출 : 모든 로그가 제출되도록 스크립트 끝에서 CloseLog ()을 호출하는 것이 일반적인 관행입니다.
CloseLog ()는 버퍼에 기록되지 않은 로그 데이터를 시스템 로그에 동기화합니다. 호출되지 않은 경우 일부 로그는 버퍼에 남겨져 있고 쓰여지지 않을 수 있습니다.
PHP를 실행하는 사용자가 시스템 로그에 쓸 수있는 권한이 있는지 확인하십시오. 그렇지 않으면 syslog () 및 closeLog ()를 호출하면 로그가 성공적으로 작성되었음을 보장 할 수 없습니다.
로그 쓰기가 핵심 작업 인 경우 가능한 예외를 처리해야합니다. syslog () 및 closeLog () 자체는 예외를 제외하지 않지만 실행중인 환경 및 로그 파일 상태를 감지하여 원활한 글쓰기를 보장 할 수 있습니다.
<?php
// 로그를 엽니 다,로그 식별자 및 옵션을 정의하십시오
openlog("myapp", LOG_PID | LOG_CONS, LOG_USER);
// 여러 로그를 작성하십시오
syslog(LOG_INFO, "작업 실행을 시작하십시오");
syslog(LOG_WARNING, "약간의 경고");
syslog(LOG_ERR, "심각한 오류가 발생했습니다");
// 로그를 닫으십시오,로그가 전체적으로 작성되었는지 확인하십시오
closelog();
?>
때로는 시스템 로그가 필요에 맞지 않을 수 있습니다. 파일 로그와 결합하여 보충 할 수 있습니다.
<?php
openlog("myapp", LOG_PID, LOG_USER);
syslog(LOG_INFO, "파일 로그에 쓰기 시작하십시오");
file_put_contents("/var/log/myapp.log", date('Y-m-d H:i:s')." 로그 내용\n", FILE_APPEND);
syslog(LOG_INFO, "파일 로그 쓰기가 완료되었습니다");
closelog();
?>
로그 데이터의 무결성을 두 배로 보장 할 수 있습니다.
조기 통화를 피하십시오 : 로그 쓰기가 완료되지 않은 경우 CloseLog () 호출하지 마십시오. 그렇지 않으면 후속 로그가 쓰여지지 않습니다.
로그 버퍼링 메커니즘 : 시스템 로그에는 일반적으로 버퍼링 메커니즘이 있으며 CloseLog ()에는 버퍼가 플러시되도록합니다.
다중 스레드 환경에서 로그 동기화 : PHP 스크립트가 다중 스레드 또는 다중 프로세스 환경에서 실행중인 경우 각 프로세스가 자체 CloseLog ()를 호출해야합니다.