>PHP 프레임워크 >ThinkPHP >ThinkPHP5.1에서 추가, 삭제, 수정 및 작업 로그 기록 확인 방법을 구현하는 방법

ThinkPHP5.1에서 추가, 삭제, 수정 및 작업 로그 기록 확인 방법을 구현하는 방법

WBOY
WBOY앞으로
2023-06-03 17:22:061587검색

1. ThinkPHP 5.1의 로깅 기능 소개

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

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

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

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

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

  1. 구성 디렉터리에 사용자 정의 구성 파일을 생성합니다

  2. 데이터 테이블에 로그 필드를 추가합니다

  3. 모델의 추가, 삭제 및 수정 방법을 다시 작성합니다

  4. 로그 기록

  5. config 디렉터리에 사용자 정의 구성 파일 만들기

먼저 사용자 정의 구성 파일을 만들어 애플리케이션의 config 디렉터리에 배치해야 합니다. 이 파일의 이름을 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. 모델의 추가, 삭제, 수정 방법을 다시 작성합니다.

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

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

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

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에서 로깅 추가, 삭제, 수정, 쿼리 작업 기능을 성공적으로 구현했습니다.

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

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제