PHP如何将log信息写入服务器中的log文件_php实例
将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 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(); ?>
然后去执行对应的代码:
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服务器中的对应的文件夹添加写权限:
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.不过突然想起来:
之前已经学过了,
file_put_contents
就可以替代了:fopen,fwrite,fclose了。
所以再去优化为:
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
【总结】
1.此处可以通过:
fopen创建log文件
fwrite写入文件信息
fclose关闭文件
去实现log信息写入到文件中的。
2.更好的做法是:
直接用更方便的
file_put_contents直接输出内容到log文件
即可。
以上就是将log信息写入服务器中的log文件文件全部内容,希望大家喜欢。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.
