현재 위치: > 최신 기사 목록> 로그 파일이 너무 큽니까? MySQLI :: Debug Resource Management 제안 사용 중입니다

로그 파일이 너무 큽니까? MySQLI :: Debug Resource Management 제안 사용 중입니다

M66 2025-06-02

디버깅 및 로깅은 PHP 응용 프로그램 개발에서 매우 중요한 부분입니다. 특히 데이터베이스 사용 시나리오, 합리적 디버깅 및 SQL 쿼리 기록은 문제를 신속하게 찾는 데 도움이 될뿐만 아니라 디버깅 정보를 효과적으로 관리하고 과도한 로그 파일을 피할 수 있습니다. mysqli :: debug 는 세부 데이터베이스 디버깅 정보를 녹화하는 데 도움이되는 매우 유용한 도구이지만 제어 없이는 로그가 빠르게 크게되어 응용 프로그램의 성능에 영향을 줄 수 있습니다.

이 기사에서는 MySQLI :: 디버그를 사용하여 디버깅 리소스를 올바르게 제어하고 과도하게 큰 로그 파일을 생성하지 않도록하는 방법에 대해 논의합니다.

1. mysqli :: debug 소개

mysqli :: debug는 MySQLI 확장 프로그램의 메소드로서 디버그 모드를 활성화하고 모든 데이터베이스 연결에 대한 디버깅 정보를 기록하는 데 사용할 수 있습니다. MySQL 데이터베이스로 전송 된 모든 쿼리를 추적하고 쿼리 및 관련 오류 정보의 실행 상태를 가져 오며 데이터베이스 연결 프로세스 중에 문제를 캡처 할 수 있습니다.

사용 방법 :

 $mysqli = new mysqli("localhost", "username", "password", "database");

// 디버그 모드를 활성화합니다
$mysqli->debug("d:t");

// 구현하다 SQL 질문
$result = $mysqli->query("SELECT * FROM users");

// 디버그 모드를 끕니다
$mysqli->debug("t");

2. 디버깅 리소스를 관리하는 방법

MySQLI :: Debug는 매우 상세한 디버깅 정보를 제공하지만 개발 및 생산 환경에서 항상 디버깅 모드를 유지할 수는 없습니다. 로그 파일이 빠르게 부풀어 오르기 때문에 시스템 성능에 영향을 미칩니다.

디버그 스위치를 제어하기 위해 조건 판단을 사용하십시오

다른 환경에 따라 디버깅 기능을 활성화할지 여부를 제어 할 수 있습니다. 개발 환경에서는 디버깅을 활성화 할 수 있으며 생산 환경에서는 너무 큰 로그를 생성하지 않도록 디버깅을 끄야합니다.

 $mysqli = new mysqli("localhost", "username", "password", "database");

// 현재 환경이 개발 환경인지 확인하십시오
if ($_SERVER['APP_ENV'] === 'development') {
    $mysqli->debug("d:t"); // 디버그 모드를 켭니다
} else {
    $mysqli->debug("t"); // 디버그 모드를 끕니다
}

3. 로그 크기 관리

과도한 로그 파일을 피하기 위해 시간 또는 파일 크기로 로그를 절단하거나 로그 정보를 데이터베이스에 저장하는 등의 로그 크기를 제한하기 위해 일부 전략을 결합 할 수 있습니다.

예 : 로그를 시간마다 잘라냅니다

로그 생성 시간을 기준으로 로그를 잘라서 각 로그 파일의 크기가 무한히 증가하지 않도록합니다.

 $logFile = __DIR__ . '/logs/mysql_debug_' . date('Y-m-d') . '.log';

$mysqli = new mysqli("localhost", "username", "password", "database");

// 지정된 로그 파일에 디버깅 및 디버그 정보를 쓰기
$mysqli->debug("d:t:" . $logFile);

// 구현하다 SQL 질문
$result = $mysqli->query("SELECT * FROM users");

이러한 방식으로, 새 로그 파일이 매일 생성되며 파일 이름에는 과도한 로그 파일 크기를 피하기 위해 현재 날짜가 포함됩니다.

예 : 파일 크기로 로그를 잘라냅니다

로그 파일 크기로 절단하려면 파일 작동 함수를 사용하여 파일 크기를 감지하고 잘라낼 수 있습니다. 간단한 예는 다음과 같습니다.

 $logFile = __DIR__ . '/logs/mysql_debug.log';

// 로그 파일 크기를 확인하십시오
if (filesize($logFile) > 10 * 1024 * 1024) { // 파일 크기가 초과 된 경우 10MB
    rename($logFile, __DIR__ . '/logs/mysql_debug_' . time() . '.log'); // Old Nisshi로 이름이 변경되었습니다
}

$mysqli = new mysqli("localhost", "username", "password", "database");

// 로그 파일에 디버깅을 활성화하고 디버그 정보를 작성하십시오
$mysqli->debug("d:t:" . $logFile);

// 구현하다 SQL 질문
$result = $mysqli->query("SELECT * FROM users");

4. URL 교체 : 민감한 정보를 보호합니다

디버깅 중에 로그 파일에는 데이터베이스 쿼리에 대한 URL 또는 기타 민감한 정보가 포함될 수 있습니다. 이 경우 코드를 통해 도메인 이름 부분을 교체하여 민감한 데이터가 유출되지 않도록 보호 할 수 있습니다.

예를 들어 로그에 다음과 같은 URL이 포함되어 있다고 가정합니다.

 $logMessage = "Request to http://example.com/api/data at " . date('Y-m-d H:i:s');

도메인 이름 부분을 다음과 같이 M66.net 으로 바꿀 수 있습니다.

 $logMessage = "Request to http://m66.net/api/data at " . date('Y-m-d H:i:s');

완전한 예

 $logFile = __DIR__ . '/logs/mysql_debug.log';
$mysqli = new mysqli("localhost", "username", "password", "database");

// 디버그 모드를 활성화합니다
$mysqli->debug("d:t:" . $logFile);

// 구현하다 SQL 질문
$query = "SELECT * FROM users WHERE email = 'user@example.com'";
$query = str_replace("example.com", "m66.net", $query); // 바꾸다 URL

$result = $mysqli->query($query);

이러한 방식으로 실제 민감한 URL 도메인 이름이 로그에 노출되지 않도록 할 수 있습니다.

5. 요약

mysqli :: debug 는 강력한 디버깅 도구이지만 제어되지 않으면 과도한 로그 파일이 시스템 성능에 영향을 줄 수 있습니다. 코드에서 디버깅 기능을 합리적으로 활성화하거나 비활성화하고 시간 또는 파일 크기로 로그를 절단하고 로그에서 민감한 정보를 처리함으로써 디버깅 리소스 및 로그 파일 크기를 효과적으로 관리하여 응용 프로그램의 정상적인 작동을 보장 할 수 있습니다.