php函数error_log

        开发过程中,对可能出错的代码做异常捕获、打印日志,有利于分析系统中的bug,暂时先不说PHP的异常捕获,先说说PHP日志打印吧。

        PHP有一函数error_log,猛一看是打印日志的,到底是不是呢,接下来咱分析下。

函数原型:

 

<?php
error_log ($message, $message_type = null, $destination = null, $extra_headers = null);
?>

 

参数说明:

 

$message //日志内容,你懂得

$message_type //日志类型

$destination //日志内容输出目标

$extra_headers //附加头内容

 

功能说明:

        以$message_type参数为切入点来说明吧。$message_type有4个可选值,在强类型语言中的话应该叫枚举值,只是PHP中没有枚举的概念。$message_type可选值如下。

        0,默认值,$message写入php.ini配置error_log指定的文件中,实例:error_log("there is ab bug");

        1,一般的用法就是将日志内容发到邮箱,$destination就是邮件地址,$extra_header附加头信息,实例:error_log("there is ab bug",1,"someone@example.com","From: webmaster@example.com");

     2,不常用,不说了;

     3,$message写入$destination指定的文件中,实例:error_log("there is ab bug\r\n",3,"D:/php.log");

 

     error_log,顾名思义是错误日志打印,其实错误这个词有点儿狭隘了,这个函数实际上是,你想打什么东西都可以,由开发者自己决定,实际上这个函数就是个写文件的函数。大家知道日志文件是多个线程或进程共享的资源,打日志呢就不能受共享资源写冲突而丢失了日志,不然日志都不准确,还怎么进一步分析系统情况呢,打日志不准确就犹如拿一把不准确的尺子量长度。那么error_log到底能完成打日志的功能不,有待测试,看测试代码。

<?php
error_log("测试\r\n",3,"D:/php.log");
?>

    用Jmeter做下并发测试,模拟600个并发用户,循环请求5次,总请求数是3000,(假设web服务器无瓶颈问题)php.log文件中应该有3000行的测试,到底能不能达到预期呢,打开php.log查下就知道了,一看,没有3000行,于是就得出了一个结论:error_log不靠谱,是的,error_log函数没有做并发处理,在高并发情况下会丢掉日志,所以这个函数没多大用,不用也罢。不用这个函数,那打日志怎么办呢?请不要留恋error_log了,还记得flock不,自己封装一个呗;或者用apache的开源项目log4php吧。

 

注:error_log函数使用的前提是设置php.ini中log_error=On

PHP 中,error_log 函数可以用来记录错误、警告和调试信息。它的语法如下: ``` void error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) ``` 其中: - `$message` 表示要记录的信息,可以是字符串或者数组。 - `$message_type` 表示信息类型,可选值如下: - 0:将信息写入到 PHP 错误日志中(默认值)。 - 1:将信息发送到指定的邮件地址。 - 2:将信息写入到指定文件中。 - 3:将信息发送到 SAPI 日志处理程序。 - `$destination` 表示信息写入的目标,当 `$message_type` 的值为 1 或 2 时,需要指定该参数。当 `$message_type` 的值为 1 时,该参数表示邮件地址;当 `$message_type` 的值为 2 时,该参数表示文件路径。 - `$extra_headers` 表示额外的邮件头信息,当 `$message_type` 的值为 1 时,可以使用该参数设置额外的邮件头信息。 示例: ``` // 记录错误日志到系统日志中 error_log('This is an error message.'); // 将错误信息写入到指定文件中 error_log('This is an error message.', 3, '/path/to/error.log'); // 将警告信息发送到指定邮件地址 error_log('This is a warning message.', 1, 'admin@example.com', 'From: webmaster@example.com'); ``` error_log 函数还可以用于调试,例如记录变量的值: ``` // 记录变量的值到错误日志中 error_log(print_r($my_var, true)); ``` 注意:使用 error_log 函数记录敏感信息时,需要确保写入的目标文件有足够的权限,避免信息泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值