我們要寫一個寫日誌的函數,首先需要瞭解需求,我們一般怎麼用日誌函數呢?例如,程式執行到某一步,我希望把這個變數(地址)$user_address的值列印到日誌,我們希望日誌裡是這麼寫的:
`xx-xx-xx xx:xx $user_address : 上海市楊浦區xxxxx
然後每一條日誌都要換行,都有日期時間,
假設 函數名稱是log();
我們希望這麼調用他 log(‘useraddress:user_address);
那如果$user_address 是一個數組,我想把一個數組的全都都輸出到日誌中,該怎麼辦呢?
有一個函數是print_r($arg,true),第二個參數表示不直接輸出,而是輸出的結果作為傳回值.我們知道他的輸出結果為一段字串.
log函數可以這麼寫
log(){ $args = func_get_args();//獲得傳入的所有參數的數組$numargs = func_num_args(); //參數的個數if ($numargs == 0) { $log = ""; } elseif ($numargs == 1) { $log = $args[0]; } else { $format = array_shift($args); //分割掉函數第一個元素,並且做傳回值返回,'$user_address:%s'$log = vsprintf($format, $args); //把參數代入$format中, } $log = date("[Y/m/d H:i:s] ") . $log . PHP_EOL;//加上時間$file = '/usr/share/nginx/html/log.log'; $fp = fopen($file, 'a'); fwrite($fp, $log); fclose($fp); return true; }
用法:
1.列印一般變數$a,
log('得到了$a的值:%s',$a );
2 . 列印一個數組$arr
log('%s',print_r($arr,true));
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
').text(i)); }; $numbering.fadeIn(1700); }); });
以上就介紹了怎麼用php寫一個日誌功能的函數,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。