This article mainly introduces how PHP writes log information to the log file on the server. For more information, see write log information to the log file on the server, after making a big round, I finally found a solution. The specific content is as follows:
Tossing:
[Record]How to write and use classes in php
During this period, you need to prepare a configurable, General, and log system.
Logs can be written to log files.
[Tossing process]
1. Search:
Php log to file
Refer:
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 Code:
Download redips10.tar.gz
2. Period:
[Solved] Add the at symbol @ in front of the function in PHP
3. Then use the code:
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); } }} ?>
Then test the Code:
<?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();?>
Then execute the corresponding code:
Http: // xxx/access_token/wx_access_token.php
The page has no output:
Then the log file is generated:
root@chantyou:php# cd access_token/root@chantyou:access_token# lltotal 16-rwxrwxrwx 1 root root 9335 Jul 27 17:51 crifanLib.php-rwxrwxrwx 1 root root 567 Jul 27 17:52 wx_access_token.phproot@chantyou:access_token# lltotal 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.phproot@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#
Note]
Remember to add the write permission to the corresponding folder on the Linux Server:
root@chantyou:php# lltotal 48drwxr-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.phpdrwxr-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.phproot@chantyou:php# chmod ugo+wx access_token/ root@chantyou:php# lltotal 48drwxrwxrwx 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.phpdrwxr-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
Otherwise, an error is reported:
Can't open/xxx/access_token/crifanLibTest. log file!
4. But I suddenly remembered:
I have learned before,
File_put_contents
You can replace fopen, fwrite, and fclose.
Therefore, the optimization is as follows:
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); }} ?>
The test file is:
<?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");?>
Effect:
Root @ chantyou: access_token # ll
Total 16
-Rw-r -- 1 root 9524 Jul 27 18:16 crifanLib. php
-Rwxrwxrwx 1 root 561 Jul 27 :18 wx_access_token.php
Root @ chantyou: access_token # ll
Total 20
-Rw-r -- 1 root 9524 Jul 27 18:16 crifanLib. php
-Rw-r -- 1 apache 76 Jul 27 18:19 logTest. log
-Rwxrwxrwx 1 root 561 Jul 27 :18 wx_access_token.php
Root @ chantyou: access_token # cat logTest. log
[12:05:47] (wx_access_token) This is crifanLib log test message using file_put_contents
Root @ chantyou: access_token #
Note:
Period reference:
PHP: is_resource-Manual
[Summary]
1. Here you can use:
Fopen creates a log file
Fwrite Write File Information
Fclose close file
To write log information to the file.
2. Better Practices:
More convenient for direct use
File_put_contents directly outputs content to the log file
You can.
The above is to write log information into all the contents of the log file on the server. I hope you will like it.