本文目錄一覽:
- 1、php實現的debug log日誌操作類實例
- 2、php 怎麼自動觸發自定義日誌
- 3、php怎麼增加log日誌來
- 4、php該在哪裡寫日誌?怎麼寫日誌?日誌是做什麼用的?
- 5、PHP自帶的日誌是怎麼寫入和查看的呢
- 6、php實現日誌管理(記錄用戶操作)原理
php實現的debug log日誌操作類實例
本文實例講述了php實現的debug
log日誌操作類。分享給大家供大家參考,具體如下:
?php
class
Tool
{
public
static
function
log($info)
{
$time
=
date(‘m-d
H:i:s’);
$backtrace
=
debug_backtrace();
$backtrace_line
=
array_shift($backtrace);
//
哪一行調用的log方法
$backtrace_call
=
array_shift($backtrace);
//
誰調用的log方法
$file
=
substr($backtrace_line[‘file’],
strlen($_SERVER[‘DOCUMENT_ROOT’]));
$line
=
$backtrace_line[‘line’];
$class
=
isset($backtrace_call[‘class’])
?
$backtrace_call[‘class’]
:
”;
$type
=
isset($backtrace_call[‘type’])
?
$backtrace_call[‘type’]
:
”;
$func
=
$backtrace_call[‘function’];
file_put_contents($_SERVER[‘DOCUMENT_ROOT’].’/debug.log’,
“$time
$file:$line
$class$type$func:
$info\n”,
FILE_APPEND);
}
}
class
Action
{
public
function
a()
{
$this-b();
}
public
function
b()
{
$this-c();
}
public
function
c()
{
Tool::log(‘sdfsdf’);
}
}
$action
=
new
Action();
$action-a();
這裡再補充一個函數:
function
loginfo($format)
{
$args
=
func_get_args();
array_shift($args);
$d
=
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT,
1)[0];
$info
=
vsprintf($format,
$args);
$data
=
sprintf(“%s
%s,%d:
%s\n”,
date(“Ymd
His”),
$d[“file”],
$d[“line”],
$info);
file_put_contents(__DIR__.”/log.txt”,
$data,
FILE_APPEND);
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP錯誤與異常處理方法總結》、《php字元串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP運算與運算符用法總結》、《PHP網路編程技巧總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
php 怎麼自動觸發自定義日誌
error_reporting(0);//關閉錯誤日誌輸入
/**定義日誌類型觸發函數***/
set_exception_handler(array(‘logClass’,”myErrorHandler”));
set_error_handler(array(‘logClass’,”myErrorHandler”));
register_shutdown_function(array(‘logClass’,”handleFatalError”));
php怎麼增加log日誌來
1、使用指定的文件記錄錯誤報告日誌
使 用指定的文件記錄錯誤報告日誌使用指定的文件記錄錯誤報告日誌使用指定的文件記錄錯誤報告日誌 如果使用自己指定的文件記錄錯誤日誌,一定要確保將這個文 件存放在文檔根目錄之外,以減少遭到攻擊的可能。並且該文件一定要讓PHP腳本的執行用戶(Web伺服器進程所有者)具有寫許可權。假設在Linux操作系 統中,將/usr/local/目錄下的error.log文件作為錯誤日誌文件,並設置Web伺服器進程用戶具有寫的許可權。然後在PHP的配置文件中, 將error_log指令的值設置為這個錯誤日誌文件的絕對路徑。
需要將php.ini中的配置指令做如下修改:
1. error_reporting = E_ALL ;將會向PHP報告發生的每個錯誤
2. display_errors = Off ;不顯示滿足上條 指令所定義規則的所有錯誤報告
3. log_errors = On ;決定日誌語句記錄的位置
4. log_errors_max_len = 1024 ;設置每個日誌項的最大長度
5. error_log = E:/php_log/php_error.log ;指定產生的 錯誤報告寫入的日誌文件位置
PHP 的配置文件按上面的方式設置完成以後,並重新啟動Web伺服器。這樣,在執行PHP的任何腳本文件時,所產生的所有錯誤報告都不會在瀏覽器中顯示,而會記 錄在自己指定的錯誤日誌/usr/local/error.log中。此外,不僅可以記錄滿足error_reporting所定義規則的所有錯誤,而且 還可以使用PHP中的error_log()函數,送出一個用戶自定義的錯誤信息。
php該在哪裡寫日誌?怎麼寫日誌?日誌是做什麼用的?
所謂的日誌就是記錄系統運行狀態的數據。
一般是將信息記錄到文本文件或資料庫中。
比如:
?php
function writeLog($msg){
$logFile = date(‘Y-m-d’).’.txt’;
$msg = date(‘Y-m-d H:i:s’).’ ‘.$msg.”\r\n”;
file_put_contents($logFile,$msg,FILE_APPEND );
}
//調用上面的函數,寫一條信息進日誌文件
writeLog(‘這是測試日誌信息’);
?
PHP自帶的日誌是怎麼寫入和查看的呢
查看PHP錯誤日誌
可以在命令行裡面輸入: find . -name error.log
tailf -f error.log
寫入日誌,有固定的函數error_log($str, 3, filename)
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-tw/n/151769.html