加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP如何将log信息写入服务器中的log文件

发布时间:2020-12-13 02:47:14 所属栏目:PHP教程 来源:网络整理
导读:《:PHP如何将log信息写入服务器中的log文件》要点: 本文介绍了:PHP如何将log信息写入服务器中的log文件,希望对您有用。如果有疑问,可以联系我们。 PHP实战 将log信息写入服务器中的log文件文件,折腾了一大圈终于找到了办理方案,具体内容如下: PHP实战

《:PHP如何将log信息写入服务器中的log文件》要点:
本文介绍了:PHP如何将log信息写入服务器中的log文件,希望对您有用。如果有疑问,可以联系我们。

PHP实战将log信息写入服务器中的log文件文件,折腾了一大圈终于找到了办理方案,具体内容如下:

PHP实战折腾:

PHP实战【记录】php中如何写类和如何使用类

PHP实战期间,必要整理出一份,可配置的,通用的,log系统.

PHP实战支持写入log信息到log文件中.

PHP实战【折腾过程】

PHP实战1.搜:

PHP实战php log to file

PHP实战参考:

PHP实战PHP: error_log C Manual

PHP实战PHP: syslog C Manual

PHP实战How to create logs with PHP C Web Services Wiki

PHP实战Write to a log file with PHP | Redips spideR Net

PHP实战下载代码:

PHP实战Download redips10.tar.gz

PHP实战2.期间:

PHP实战【已办理】PHP中函数前面加上at符号@的作用

PHP实战3.然后用代码:

PHP实战
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,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实战然后测试代码:

PHP实战
<?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();
?>

PHP实战
然后去执行对应的代码:

PHP实战http://xxx/access_token/wx_access_token.php

PHP实战页面是没有任何输出的:

PHP实战

PHP实战然后的确生成了log文件了:

PHP实战
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#

PHP实战【注意】

PHP实战要记得给对应的(此处是Linux服务器中的对应的文件夹添加写权限:

PHP实战
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

PHP实战否则会报错的:

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

PHP实战4.不过突然想起来:

PHP实战之前已经学过了,

PHP实战file_put_contents

PHP实战就可以替代了:fopen,fwrite,fclose了.

PHP实战所以再去优化为:

PHP实战crifanLib.php

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,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实战
测试文件为:

PHP实战
<?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");
?>

PHP实战效果是:

PHP实战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实战

PHP实战注:

PHP实战期间参考:

PHP实战PHP: is_resource C Manual

PHP实战【总结】

PHP实战1.此处可以通过:

PHP实战fopen创建log文件
fwrite写入文件信息
fclose关闭文件
去实现log信息写入到文件中的.

PHP实战2.更好的做法是:

PHP实战直接用更便利的

PHP实战file_put_contents直接输出内容到log文件
即可.

PHP实战以上便是将log信息写入服务器中的log文件文件全部内容,希望大家喜欢.

《:PHP如何将log信息写入服务器中的log文件》是否对您有启发,欢迎查看更多与《:PHP如何将log信息写入服务器中的log文件》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读