PHP如何将log信息写入服务器中的log文件
将log信息写入服务器中的log文件文件,折腾了一大圈终于找到了解决方案,具体内容如下
折腾
【记录】php中如何写类和如何使用类
期间,需要整理出一份,可配置的,通用的,log系统。
支持写入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中函数前面加上at符号@的作用
3.然后用代码
crifanLib.php <?php / [Filename] crifanLib.php [Function] crifan's php lib, implement mon functions [Author] Crifan Li [Contact] http://.crifan./contact_me/ [Note] 1.online see code: http://code.google./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./questions/1482260/how-to-get-the-os-on-which-php-is-running //http://php./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 fet 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://.crifan./about/me/ Function: Wechat get aess token / include_once "crifanLib.php"; //test log $crifanLib = new crifanLib(); $crifanLib->logInit("/xxx/aess_token/crifanLibTest.log"); $crifanLib->logWrite("This is crifanLib log test message."); $crifanLib->logDeinit(); ?>
然后去执行对应的代码
页面是没有任何输出的
然后的确生成了log文件了
root@chantyou:php# cd aess_token/ root@chantyou:aess_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_aess_token.php root@chantyou:aess_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_aess_token.php root@chantyou:aess_token# cat crifanLibTest.log [2015-07-27 10:10:33] (wx_aess_token) This is crifanLib log test message. root@chantyou:aess_token#
【注意】
要记得给对应的(此处是Linux服务器中的对应的文件夹添加写权限
root@chantyou:php# ll total 48 drwxr-xr-x 2 root root 4096 Jul 27 17:55 aess_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 aess_token/ root@chantyou:php# ll total 48 drwxrwxrwx 2 root root 4096 Jul 27 17:55 aess_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/aess_token/crifanLibTest.log file!
4.不过突然想起来
之前已经学过了,
file_put_contents
就可以替代了fopen,fwrite,fclose了。
所以再去优化为
crifanLib.php
<?php / [Filename] crifanLib.php [Function] crifan's php lib, implement mon functions [Author] Crifan Li [Contact] http://.crifan./contact_me/ [Note] 1.online see code: http://code.google./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./questions/1482260/how-to-get-the-os-on-which-php-is-running //http://php./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 fet 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://.crifan./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"); ?>
效果是
# 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_aess_token.php
# 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_aess_token.php
# cat logTest.log
[2015-07-27 12:05:47] (wx_aess_token) This is crifanLib log test message using file_put_contents
#
如图
注
期间参考
PHP: is_resource – Manual
【】
1.此处可以通过
fopen创建log文件
fwrite写入文件信息
fclose关闭文件
去实现log信息写入到文件中的。
2.更好的做法是
直接用更方便的
file_put_contents直接输出内容到log文件
即可。
以上就是将log信息写入服务器中的log文件文件全部内容,希望大家喜欢。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程