How does PHP write log information into the server's log file _ php instance?

Source: Internet
Author: User
Tags php write
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.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.