>  기사  >  PHP 프레임워크  >  ThinkPHP 5.1에서 추가, 삭제, 수정 및 쿼리 작업에 대한 로깅을 구현하는 방법

ThinkPHP 5.1에서 추가, 삭제, 수정 및 쿼리 작업에 대한 로깅을 구현하는 방법

PHPz
PHPz원래의
2023-04-11 09:15:57968검색

ThinkPHP는 매우 인기 있는 PHP 개발 프레임워크로 다양하고 강력한 기능을 제공하며 신속한 개발을 지원합니다. 그 중 CRUD(CRUD)는 웹 개발에 있어서 빼놓을 수 없는 기본 작업이다. 애플리케이션의 작동을 더 잘 추적하려면 작동 로그를 기록하는 것이 매우 중요합니다. 이 기사에서는 ThinkPHP 5.1에서 추가, 삭제, 수정 및 쿼리 작업의 로깅을 구현하는 방법을 살펴보겠습니다.

1. ThinkPHP 5.1의 로깅 기능 소개

ThinkPHP 5.1에는 로깅 기능이 내장되어 있습니다. 오류 메시지, 디버깅 정보, 사용자 작업 등과 같은 다양한 이벤트를 기록하기 위해 애플리케이션에서 이를 사용할 수 있습니다. 프레임워크는 DEBUG, INFO, NOTICE 및 ERROR의 네 가지 로깅 수준을 제공합니다.

기본 제공 로그 수준 외에도 자체 로그 수준을 정의할 수도 있습니다. 예를 들어 추가, 삭제, 수정 및 쿼리 작업을 기록하기 위해 로그 수준 "CRUD"를 만들 수 있습니다.

기본적으로 로그는 애플리케이션 루트 디렉터리 아래의 로그 디렉터리에 기록됩니다. 로그 저장 위치를 ​​변경해야 하는 경우 구성 파일을 수정하여 변경할 수 있습니다. 구성 파일은 일반적으로 애플리케이션의 구성 디렉터리에 있습니다.

2. 추가, 삭제, 수정, 확인 작업의 로그 기록 구현

ThinkPHP 5.1에서 추가, 삭제, 수정, 확인 작업의 로그 기록을 구현하는 방법을 살펴보겠습니다. 이를 달성하기 위해 다음 단계를 따릅니다.

  1. config 디렉터리에 사용자 정의 구성 파일 만들기
  2. 데이터 테이블에 로그 필드 추가
  3. 모델에서 추가, 삭제 및 수정 방법 다시 작성
  4. 로그 기록
  5. 구성 디렉터리에 사용자 정의 구성 파일 만들기 구성 파일

먼저 애플리케이션의 구성 디렉터리에 사용자 정의 구성 파일을 만들어야 합니다. 이 파일의 이름을 common_extra.php로 지정합니다.

$config = [

'crud_log' => true, // 记录增删改查日志
'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段

];

구성에서는 두 가지 옵션을 설정합니다. 첫 번째는 로깅을 켜거나 끄는 데 사용되는 crud_log입니다. 두 번째는 기록되지 않는 필드를 지정하는 데 사용되는 crud_ignore_fields입니다.

  1. 데이터 테이블에 로그 필드 추가

다음으로 추가, 삭제, 수정 및 쿼리 작업을 기록하기 위해 데이터 테이블에 일부 필드를 추가해야 합니다. 각 데이터 테이블에 다음 필드를 추가할 수 있습니다.

  1. id(자동 증가 기본 키)
  2. user_id(작업 사용자 ID, 비어 있을 수 있음)
  3. action(추가, 삭제, 수정과 같은 작업 유형)
  4. table_name ( 연산 데이터 테이블 이름)
  5. data (연산 데이터)
  6. created_at (연산 시간)
  7. Model의 추가, 삭제, 수정 방법을 다시 작성하세요

이제 추가, 삭제, 수정 방법을 다시 작성해야 합니다. 로깅을 달성하기 위해 모델에서. 이를 달성하기 위해 전역 쿼리 범위를 사용할 것입니다. 생성, 업데이트 및 삭제 메서드를 재정의합니다.

각 방법마다 해당 작업 유형과 데이터를 기록합니다. 그런 다음 로그 클래스를 사용하여 로그 파일에 로그를 기록합니다.

다음은 몇 가지 샘플 코드입니다.

namespace appcommonmodel;

use thinkModel;

class User 확장 Model
{

protected $table = 'users';

// 添加全局查询范围
protected static function init()
{
    // 添加操作记录
    static::beforeInsert(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'add';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });

    // 修改操作记录
    static::beforeUpdate(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'update';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });

    // 删除操作记录
    static::beforeDelete(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'delete';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });
}

}

  1. Logging

마지막으로 기록하겠습니다. 이전 예에서는 "log"라는 데이터 테이블에 로그를 기록했습니다. 그러나 원하는 경우 로그를 파일에 기록하거나, 로그 서버로 보내거나, 다른 곳으로 보낼 수 있습니다.

위 단계를 통해 ThinkPHP 5.1에서 로깅 추가, 삭제, 수정, 쿼리 작업 기능을 성공적으로 구현했습니다.

결론

이 글에서는 ThinkPHP 5.1에서 추가, 삭제, 수정, 쿼리 작업을 로그하는 방법을 소개했습니다. 기존 작업 방법을 비교한 결과 로깅을 사용하면 애플리케이션 작업을 더 잘 추적할 수 있고 분석을 위해 다른 도구와 더 잘 결합할 수도 있다는 사실을 발견했습니다. 독자들이 이 기사의 경험을 활용하여 애플리케이션의 유지 관리성과 확장성을 향상할 수 있기를 바랍니다.

위 내용은 ThinkPHP 5.1에서 추가, 삭제, 수정 및 쿼리 작업에 대한 로깅을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.