php的日誌記錄,php日誌記錄所有操作記錄

本文目錄一覽:

php網站日誌怎麼記錄

php有自己的日誌機制的,去php.ini里配置一項error_log相關的配置項就可以了。

php 數據庫操作日誌記錄

//先創建一個log表,有id, action, username, query, time 等字段,如果需要記錄更多,可添加

$query_string = $_SERVER[‘QUERY_STRING’];//查詢(query)的字符串,這個最好處理一下

$action = $_REQUEST[‘action’];//操作類型,可以自己定義。比如?action=addid=xx

//$username就是當前操作人的名字了,登錄後都有的吧

if(in_array($action, array(‘add’, ‘edit’,’delete’,’update’)))

{

addlog($action,$username,$query_string);

}

function addlog($action,$username,$query_string)

{

//這裡可以把時間和$query_string處理一下,插入數據庫

$db-query($sql);

}

大致思路就是這樣的了,細節還需你自己完善

如何開啟PHP日誌功能?

在php編程中,對於一些訪問沒有明顯錯誤提示的php頁面,可以通過error_log來做進一步的判定。

但出於種種原因,有些服務器並沒有開啟PHP的error_log功能。

測試或其它需要時,可以打開一下,方法如下。

編輯php.ini,將log_errors設置為on:

log_errors = On

然後,重啟apache即可。

如成功開啟,就可以跟蹤到對應的錯誤提示:

[Mon Sep 24 16:57:01 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/bccgi-bin/fsockopen.php on line 2

[Mon Sep 24 16:57:02 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/bccgi-bin/fsockopen.php on line 2

[Mon Sep 24 16:57:03 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/bccgi-bin/fsockopen.php on line 2

[Mon Sep 24 16:57:04 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/bccgi-bin/fsockopen.php on line

另外,注意在Windows環境下,除了將log_errors設置為on外,還需要定義error_log的路徑及文件名:

error_log = d:/temp/error.log

(此目錄需要授予php標識用戶的修改權限,否則日誌文件無法生成)

IIS沒有error_log的概念,所以需要另外定義。

thinkphp日誌記錄文件被存在了什麼地方

日誌記錄\ThinkPHP\Lib\Think\Core\Log.class.php

1、可以在config.php中進行設置,默認為關閉狀態。 ‘APP_DEBUG’ = true

打開\ThinkPHP\Common\debug.php文件可以查看debug的默認設置如下:

return array(

‘LOG_RECORD’=true, // 進行日誌記錄

‘LOG_RECORD_LEVEL’ = array(‘EMERG’,’ALERT’,’CRIT’,’ERR’,’WARN’,’NOTIC’,’INFO’,’DEBUG’,’SQL’), // 允許記錄的日誌級別

‘DB_FIELDS_CACHE’= false, //數據庫字段緩存

‘SHOW_RUN_TIME’=true, // 運行時間顯示

‘SHOW_ADV_TIME’=true, // 顯示詳細的運行時間

‘SHOW_DB_TIMES’=true, // 顯示數據庫查詢和寫入次數

‘SHOW_CACHE_TIMES’=true, // 顯示緩存操作次數

‘SHOW_USE_MEM’=true, // 顯示內存開銷

‘SHOW_PAGE_TRACE’=true, // 顯示頁面Trace信息 由Trace文件定義和Action操作賦值

‘APP_FILE_CASE’ = true, // 是否檢查文件的大小寫 對Windows平台有效

);

注意事項:DB_FIELDS_CACHE數據庫字段緩存默認關閉狀態,如果開啟的話,會在Runtime\Data文件夾下生成文件緩存,並且修改表之後,如新加了字段,這個緩存無法記錄你的操作,需要我們手動刪除一次,對錶的修改才會成功。

將’APP_DEBUG’ = true後,訪問頁面會出現如下圖的DEBUG提示:

如果只想顯示一部分提示信息,如運行時間,內存開銷等,

可以在config.php中進行相應的設置即可,如:

//’APP_DEBUG’ = true, // 調試模式開關

‘SHOW_RUN_TIME’ = true, //運行時間顯示

‘SHOW_ADV_TIME’ = true, //顯示詳細的運行時間

‘SHOW_DB_TIMES’ = true, //顯示數據庫的操作次數

‘SHOW_CACHE_TIMES’=true, //顯示緩存操作次數

‘SHOW_USE_MEM’ = true, //顯示內存開銷

提示信息如下圖:

2、頁面Trace信息的自定義:\ThinkPHP\Tpl\PageTrace.tpl.php

自定義的方法一:在config.php的同級目錄加上一個trace.php文件

?php

return array{

‘當前的server信息’=$_SERVER[‘REMOTE_ADDR’],

};

?

自定義的方法二:在Action方法中添加

$this-trace(‘我很醜,但是我很溫柔’,’5211314′);

3、輸出調試法:

halt(‘aaaaaaa’);//輸出aaaaaa並且中斷程序執行

4、模型調試:顯示SQL語句

$User=new Model(‘User’);

$User-find(1);

echo $User-getLastSql();//輸出最後執行的一條SQL語句

5、日誌記錄\ThinkPHP\Lib\Think\Core\Log.class.php

config.php中設置

‘LOG_RECORD’=true,//開啟了日誌記錄

‘LOG_RECORD_LEVEL’=array(‘EMERG’,’ALERT’

php實現日誌管理(記錄用戶操作)原理

把日誌需要保留的數據用json串或xml等數據結構的方式存儲起來,調用的時候直接解析這些數據結構即可。

按簡單的理解,給各模塊的關鍵步驟起個操作名字,記錄一下該操作名,時間,用戶,IP等就完了。

單入口模式,這樣只需要往index.php加入write_log功能就好了。

至於哪個字段,原值,新值,這個沒什麼好方法啊,可以引入插件機制,

開個類存儲插件方法,命名以module_task為準,比如以上的url就是article_update

那麼這個插件類就是

class plugin

{

public $extraLog;

function article_update($field,$old,$new)

{

self::$extraLog = array(‘字段’=$field,’原值’=$old,’新值’=$new);

}

}

這個方法在流程頁面進行數據庫操作的地方調用,index.php的write_log流程只讀plubin::$extraLog,循環然後和其它信息一起入庫或文件。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244705.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:03
下一篇 2024-12-12 13:03

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Cron執行日誌用法介紹

    本文將從多個方面對cron執行日誌進行詳細闡述,包括cron執行日誌的定義、cron執行日誌的產生原因、cron執行日誌的格式以及如何解讀cron執行日誌。 一、定義 Cron是一…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows服務器上的日誌,並將其發送到遠程服務器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29

發表回復

登錄後才能評論