PHP如何將log信息寫(xiě)入服務(wù)器中的log文件
將log信息寫(xiě)入服務(wù)器中的log文件文件,折騰了一大圈終于找到了解決方案,具體內(nèi)容如下:
折騰:
【記錄】php中如何寫(xiě)類和如何使用類
期間,需要整理出一份,可配置的,通用的,log系統(tǒng)。
支持寫(xiě)入log信息到log文件中。
【折騰過(guò)程】
1.搜:
php log to file
參考:
PHP: error_log – Manual
PHP: syslog – Manual
How to create logs with PHP – Web Services Wiki
Write to a log file with PHP | Redips spideR Net
下載代碼:
Download redips10.tar.gz
2.期間:
【已解決】PHP中函數(shù)前面加上at符號(hào)@的作用
3.然后用代碼:
crifanLib.php
<?php
/*
[Filename]
crifanLib.php
[Function]
crifan's php lib, implement common functions
[Author]
Crifan Li
[Contact]
http://www.crifan.com/contact_me/
[Note]
1.online see code:
http://code.google.com/p/crifanlib/source/browse/trunk/php/crifanLib.php
[TODO]
[History]
[v1.0]
1.initial version, need clean up later
*/
class crifanLib {
private $logFile;
private $logFp;
/*
Init log file
*/
function logInit($inputLogFile = null){
// set default log file name
// in case of Windows set default log file
//http://stackoverflow.com/questions/1482260/how-to-get-the-os-on-which-php-is-running
//http://php.net/manual/zh/function.php-uname.php
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$defautLogFile = 'C:/php/defLogFile.log';
}
// set default log file for Linux and other systems
else {
$defautLogFile = '/tmp/defLogFile.log';
}
$this->logFile = $inputLogFile ? $inputLogFile : $defautLogFile;
// open log file for writing only and place file pointer at the end of the file
// (if the file does not exist, try to create it)
$this->logFp = fopen($this->logFile, 'a') or exit("Can't open $this->logFile!");
}
/*
Write log info to file
*/
function logWrite($logContent){
// if file pointer doesn't exist, then open log file
if (!is_resource($this->logFp)) {
$this->logInit();
}
// define script name
$script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);
// define current time and suppress E_WARNING if using the system TZ settings
// (don't forget to set the INI setting date.timezone)
$time = @date('[Y-m-d H:i:s] ');
// write current time, script name and message to the log file
fwrite($this->logFp, "$time ($script_name) $logContent" . PHP_EOL);
}
/*
Deinit log
*/
function logDeinit(){
if (is_resource($this->logFp)) {
fclose($this->logFp);
}
}
}
?>
然后測(cè)試代碼:
<?php
/*
Author: Crifan Li
Version: 2015-07-27
Contact: http://www.crifan.com/about/me/
Function: Wechat get access token
*/
include_once "crifanLib.php";
//test log
$crifanLib = new crifanLib();
$crifanLib->logInit("/xxx/access_token/crifanLibTest.log");
$crifanLib->logWrite("This is crifanLib log test message.");
$crifanLib->logDeinit();
?>
然后去執(zhí)行對(duì)應(yīng)的代碼:
http://xxx/access_token/wx_access_token.php
頁(yè)面是沒(méi)有任何輸出的:

然后的確生成了log文件了:
root@chantyou:php# cd access_token/ root@chantyou:access_token# ll total 16 -rwxrwxrwx 1 root root 9335 Jul 27 17:51 crifanLib.php -rwxrwxrwx 1 root root 567 Jul 27 17:52 wx_access_token.php root@chantyou:access_token# ll total 20 -rwxrwxrwx 1 root root 9335 Jul 27 17:51 crifanLib.php -rw-r--r-- 1 apache apache 77 Jul 27 17:56 crifanLibTest.log -rwxrwxrwx 1 root root 567 Jul 27 17:52 wx_access_token.php root@chantyou:access_token# cat crifanLibTest.log [2015-07-27 10:10:33] (wx_access_token) This is crifanLib log test message. root@chantyou:access_token#
【注意】
要記得給對(duì)應(yīng)的(此處是Linux服務(wù)器中的對(duì)應(yīng)的文件夾添加寫(xiě)權(quán)限:
root@chantyou:php# ll total 48 drwxr-xr-x 2 root root 4096 Jul 27 17:55 access_token -rwxr-xr-x 1 root root 1091 Sep 25 2014 errorCode.php -rw-r--r-- 1 root root 2230 Jun 10 14:16 MicromsgVerify.php -rwxr-xr-x 1 root root 4288 Sep 25 2014 pkcs7Encoder.php -rwxr-xr-x 1 root root 452 Sep 15 2014 Readme.txt -rwxr-xr-x 1 root root 724 Sep 22 2014 sha1.php drwxr-xr-x 2 root root 4096 Jul 20 12:34 wechat_encypt -rwxr-xr-x 1 root root 5327 Sep 15 2014 WXBizMsgCrypt.php -rwxrwxrwx 1 root root 2455 Jul 16 18:06 wx_didaosuzhou.php -rwxr-xr-x 1 root root 1346 Sep 22 2014 xmlparse.php root@chantyou:php# chmod ugo+wx access_token/ root@chantyou:php# ll total 48 drwxrwxrwx 2 root root 4096 Jul 27 17:55 access_token -rwxr-xr-x 1 root root 1091 Sep 25 2014 errorCode.php -rw-r--r-- 1 root root 2230 Jun 10 14:16 MicromsgVerify.php -rwxr-xr-x 1 root root 4288 Sep 25 2014 pkcs7Encoder.php -rwxr-xr-x 1 root root 452 Sep 15 2014 Readme.txt -rwxr-xr-x 1 root root 724 Sep 22 2014 sha1.php drwxr-xr-x 2 root root 4096 Jul 20 12:34 wechat_encypt -rwxr-xr-x 1 root root 5327 Sep 15 2014 WXBizMsgCrypt.php -rwxrwxrwx 1 root root 2455 Jul 16 18:06 wx_didaosuzhou.php -rwxr-xr-x 1 root root 1346 Sep 22 2014 xmlparse.php
否則會(huì)報(bào)錯(cuò)的:
Can't open /xxx/access_token/crifanLibTest.log file!
4.不過(guò)突然想起來(lái):
之前已經(jīng)學(xué)過(guò)了,
file_put_contents
就可以替代了:fopen,fwrite,fclose了。
所以再去優(yōu)化為:
crifanLib.php
<?php
/*
[Filename]
crifanLib.php
[Function]
crifan's php lib, implement common functions
[Author]
Crifan Li
[Contact]
http://www.crifan.com/contact_me/
[Note]
1.online see code:
http://code.google.com/p/crifanlib/source/browse/trunk/php/crifanLib.php
[TODO]
[History]
[v2015-07-27]
1.add logInit, logWrite
[v1.0]
1.initial version, need clean up later
*/
class crifanLib {
private $logFile;
private $logFp;
/*
Init log file
*/
function logInit($inputLogFile = null){
// set default log file name
// in case of Windows set default log file
//http://stackoverflow.com/questions/1482260/how-to-get-the-os-on-which-php-is-running
//http://php.net/manual/zh/function.php-uname.php
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$defautLogFile = 'C:/php/defLogFile.log';
}
// set default log file for Linux and other systems
else {
$defautLogFile = '/tmp/defLogFile.log';
}
$this->logFile = $inputLogFile ? $inputLogFile : $defautLogFile;
}
/*
Write log info to file
*/
function logWrite($logContent){
// define script name
$scriptName = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);
// define current time and suppress E_WARNING if using the system TZ settings
// (don't forget to set the INI setting date.timezone)
$timeStr = @date('[Y-m-d H:i:s]');
// write current time, script name and message to the log file
file_put_contents($this->logFile, "$timeStr ($scriptName) $logContent" . PHP_EOL, FILE_APPEND);
}
}
?>
測(cè)試文件為:
<?php
/*
Author: Crifan Li
Version: 2015-07-27
Contact: http://www.crifan.com/about/me/
Function: test crifanLib log
*/
include_once "crifanLib.php";
//test log
$crifanLib = new crifanLib();
$crifanLib->logInit("/xxx/logTest.log");
$crifanLib->logWrite("This is crifanLib log test message using file_put_contents");
?>
效果是:
root@chantyou:access_token# ll
total 16
-rw-r--r-- 1 root root 9524 Jul 27 18:16 crifanLib.php
-rwxrwxrwx 1 root root 561 Jul 27 18:18 wx_access_token.php
root@chantyou:access_token# ll
total 20
-rw-r--r-- 1 root root 9524 Jul 27 18:16 crifanLib.php
-rw-r--r-- 1 apache apache 76 Jul 27 18:19 logTest.log
-rwxrwxrwx 1 root root 561 Jul 27 18:18 wx_access_token.php
root@chantyou:access_token# cat logTest.log
[2015-07-27 12:05:47] (wx_access_token) This is crifanLib log test message using file_put_contents
root@chantyou:access_token#
如圖:

注:
期間參考:
PHP: is_resource – Manual
【總結(jié)】
1.此處可以通過(guò):
fopen創(chuàng)建log文件
fwrite寫(xiě)入文件信息
fclose關(guān)閉文件
去實(shí)現(xiàn)log信息寫(xiě)入到文件中的。
2.更好的做法是:
直接用更方便的
file_put_contents直接輸出內(nèi)容到log文件
即可。
以上就是將log信息寫(xiě)入服務(wù)器中的log文件文件全部?jī)?nèi)容,希望大家喜歡。
- PHP實(shí)現(xiàn)Socket服務(wù)器的代碼
- php獲取服務(wù)器信息的實(shí)現(xiàn)代碼
- php socket客戶端及服務(wù)器端應(yīng)用實(shí)例
- PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法
- 利用php獲取服務(wù)器時(shí)間的實(shí)現(xiàn)代碼
- 七款最流行的PHP本地服務(wù)器分享
- PHP實(shí)現(xiàn)服務(wù)器狀態(tài)監(jiān)控的方法
- php獲取服務(wù)器操作系統(tǒng)相關(guān)信息的方法
- 服務(wù)器上配置PHP運(yùn)行環(huán)境教程
- PHP服務(wù)器端API原理及示例講解(接口開(kāi)發(fā))
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(一)
相關(guān)文章
tp5框架使用composer實(shí)現(xiàn)日志記錄功能示例
這篇文章主要介紹了tp5框架使用composer實(shí)現(xiàn)日志記錄功能,結(jié)合實(shí)例形式分析了thinkPHP5框架composer安裝及日志記錄相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
yii2 數(shù)據(jù)庫(kù)讀寫(xiě)分離配置示例
本篇文章主要介紹了yii2 數(shù)據(jù)庫(kù)讀寫(xiě)分離配置示例,數(shù)據(jù)庫(kù)讀寫(xiě)分離是在網(wǎng)站遇到性能瓶頸的時(shí)候最先考慮優(yōu)化的步驟,有興趣的可以了解一下。2017-02-02
php使用event擴(kuò)展的io復(fù)用測(cè)試的示例
這篇文章主要介紹了php使用event擴(kuò)展的io復(fù)用測(cè)試的示例,幫助大家更好的理解和使用php,感興趣的朋友可以了解下2020-10-10
PHP循環(huán)結(jié)構(gòu)實(shí)例講解
這篇文章主要介紹了PHP循環(huán)結(jié)構(gòu)實(shí)例講解,需要的朋友可以參考下2014-02-02
PHP實(shí)現(xiàn)留言板功能的詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)留言板功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕
這篇文章主要介紹了PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕,文字滾動(dòng)分為兩種情況,一種為水平滾動(dòng),一種為垂直滾動(dòng),需要的朋友可以參考下2014-07-07

