欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP如何將log信息寫入服務器中的log文件

 更新時間:2015年07月29日 10:34:27   投稿:mrr  
這篇文章主要介紹了PHP如何將log信息寫入服務器中的log文件,需要的朋友可以參考下

將log信息寫入服務器中的log文件文件,折騰了一大圈終于找到了解決方案,具體內(nèi)容如下:

折騰:

【記錄】php中如何寫類和如何使用類

期間,需要整理出一份,可配置的,通用的,log系統(tǒng)。

支持寫入log信息到log文件中。

【折騰過程】

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符號@的作用

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);
  }
 }
}
 ?>

然后測試代碼:

<?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í)行對應的代碼:

http://xxx/access_token/wx_access_token.php

頁面是沒有任何輸出的:

然后的確生成了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#

【注意】

要記得給對應的(此處是Linux服務器中的對應的文件夾添加寫權(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

否則會報錯的:

Can't open /xxx/access_token/crifanLibTest.log file!

4.不過突然想起來:

之前已經(jīng)學過了,

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);
 }
}
 ?>


測試文件為:

<?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.此處可以通過:

fopen創(chuàng)建log文件
fwrite寫入文件信息
fclose關(guān)閉文件
去實現(xiàn)log信息寫入到文件中的。

2.更好的做法是:

直接用更方便的

file_put_contents直接輸出內(nèi)容到log文件
即可。

以上就是將log信息寫入服務器中的log文件文件全部內(nèi)容,希望大家喜歡。

相關(guān)文章

  • tp5框架使用composer實現(xiàn)日志記錄功能示例

    tp5框架使用composer實現(xiàn)日志記錄功能示例

    這篇文章主要介紹了tp5框架使用composer實現(xiàn)日志記錄功能,結(jié)合實例形式分析了thinkPHP5框架composer安裝及日志記錄相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • yii2的restful api路由實例詳解

    yii2的restful api路由實例詳解

    這篇文章主要介紹了yii2的restful api路由實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • yii2 數(shù)據(jù)庫讀寫分離配置示例

    yii2 數(shù)據(jù)庫讀寫分離配置示例

    本篇文章主要介紹了yii2 數(shù)據(jù)庫讀寫分離配置示例,數(shù)據(jù)庫讀寫分離是在網(wǎng)站遇到性能瓶頸的時候最先考慮優(yōu)化的步驟,有興趣的可以了解一下。
    2017-02-02
  • PHP 9 大緩存技術(shù)總結(jié)

    PHP 9 大緩存技術(shù)總結(jié)

    也就是將頁面全部生成html靜態(tài)頁面,用戶訪問時直接訪問的靜態(tài)頁面,而不會去走php服務器解析的流程。此種方式,在CMS系統(tǒng)中比較常見,比如dedecms,下面通過本文給大家分享了php9大緩存技術(shù)總結(jié),需要的朋友可以參考下
    2015-09-09
  • 用php實現(xiàn)選擇排序的解決方法

    用php實現(xiàn)選擇排序的解決方法

    本篇文章介紹了,使用php實現(xiàn)選擇排序的解決方法。需要的朋友參考下
    2013-05-05
  • php使用event擴展的io復用測試的示例

    php使用event擴展的io復用測試的示例

    這篇文章主要介紹了php使用event擴展的io復用測試的示例,幫助大家更好的理解和使用php,感興趣的朋友可以了解下
    2020-10-10
  • PHP循環(huán)結(jié)構(gòu)實例講解

    PHP循環(huán)結(jié)構(gòu)實例講解

    這篇文章主要介紹了PHP循環(huán)結(jié)構(gòu)實例講解,需要的朋友可以參考下
    2014-02-02
  • PHP 實例化類的一點摘記

    PHP 實例化類的一點摘記

    最近在編寫 Grace PHP5 Framework 中,我得到很多類的實例化的心得。Grace PHP5 Framework 是一個完全基于 MVC 架構(gòu)的框架,具有良好的擴展性。它對于類的調(diào)用可以說非常的靈活。
    2008-03-03
  • PHP實現(xiàn)留言板功能的詳細代碼

    PHP實現(xiàn)留言板功能的詳細代碼

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)留言板功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • PHP使用GIFEncoder類生成gif動態(tài)滾動字幕

    PHP使用GIFEncoder類生成gif動態(tài)滾動字幕

    這篇文章主要介紹了PHP使用GIFEncoder類生成gif動態(tài)滾動字幕,文字滾動分為兩種情況,一種為水平滾動,一種為垂直滾動,需要的朋友可以參考下
    2014-07-07

最新評論