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

2025-05-29 0 103

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.然后用代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69
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);

}

}

}

?>

然后测试代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
<?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

页面是没有任何输出的:

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

然后的确生成了log文件了:

?

1

2

3

4

5

6

7

8

9

10

11

12

13
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服务器中的对应的文件夹添加写权限:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54
<?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);

}

}

?>


测试文件为:

?

1

2

3

4

5

6

7

8

9

10

11

12

13
<?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如何将log信息写入服务器中的log文件

注:

期间参考:

PHP: is_resource – Manual

【总结】

1.此处可以通过:

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

2.更好的做法是:

直接用更方便的

file_put_contents直接输出内容到log文件
即可。

以上就是将log信息写入服务器中的log文件文件全部内容,希望大家喜欢。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP如何将log信息写入服务器中的log文件 https://www.kuaiidc.com/101226.html

相关文章

发表评论
暂无评论