`

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用法实例分析

    主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置、函数功能、用法与使用注意事项,需要的朋友可以参考下

    php error_log 函数的使用

    我们来大致了解一下error_log()函数。我们看下手册的解释: error_log(PHP 3, PHP 4, PHP 5) bool error_log ( string message [, int message_type [, string destination [, string extra_headers]]] )发送一个...

    PHP中error_log()函数的使用方法

    本文实例讲述了PHP中error_log()函数的使用方法。分享给大家供大家参考。具体分析如下: 今天遇到一个问题需要调试,但是只能通过日志打印调试,就用到了error_log这个函数 需要打印的是一台服务器发送到我们服务器...

    PHP error_log()将错误信息写入一个文件(定义和用法)

    error_log() 是发送错误信息到某个地方的一个函数,在程序编程中比较常见,尤其是在程序调试阶段。本文将用实例讲解一下error_log()这个函数的用法,以及一些需要注意的问题。复制代码 代码如下:&lt;?php$str=’这是...

    PHP 日志缩略名的创建函数代码

    您可能感兴趣的文章:php实现的简单日志写入函数PHP调试函数和日志记录函数分享php基于自定义函数记录log日志方法php error_log 函数的使用PHP error_log()将错误信息写入一个文件(定义和用法)PHP中error_log()函数...

    php-error-log:一个以简单方式管理应用程序日志的小型库.. 快速.. 直接!!

    在行中,所做的是在程序员和 PHP error_log()函数之间创建一个抽象层。 那么……它有什么特别之处? 最大的优点是您可以使用error_log()以所有三种可能的方式写入日志,只需更改参数即可。 永远!! 将写入日志,...

    PHP中把错误日志保存在系统日志中(Windows系统)

    【将错误记录到系统日志中】 ...ini_set('log_errors', 'on'); //设置错误日志的路径 ini_set('error_log', 'syslog'); //显示所有错误 error_reporting(-1); //记录错误 //通知级别的错误 echo $test; //警告 set

    php基于自定义函数记录log日志方法

    本文实例讲述了php基于自定义函数记录log日志方法。分享给大家供大家参考,具体如下: /** * 记录错误日志 * @param 日志内容 $res */ function save_log($res) { $err_date = date(Ym, time()); //$address =...

    PHP mail()函数使用及配置方法

    复制代码 代码如下: [sendmail] smtp_server=smtp.qq.com smtp_port=25 error_logfile=error.log debug_logfile=debug.log auth_username=***@qq.com auth_password=*** force_sender=***@qq.com -ph

    PHP 选项及相关信息函数库

    error_log : 送出一个错误信息。 error_reporting : 配置错误信息回报的等级。 getenv : 取得系统的环境变量 get_cfg_var : 取得 PHP 的配置选项值。 get_current_user : 取得 PHP 行程的拥有者...

    SeasLog:PHP的有效,快速,稳定的日志扩展。http:pecl.php.netpackageSeasLog http:php.netSeasLog

    PHP内置的error_log,syslog函数功能强大且性能卓越,但是由于存在各种缺陷(error_log没有错误级别,没有固定格式,syslog与模块无关并且与系统日志混合使用),降低了很多灵活性,并且无法满足申请要求。...

    nginx 1.9 window 版本

    error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的...

    validate-echo-request-php:PHP函数来验证Amazon Echo请求

    PHP函数可验证Amazon Echo请求。 这会强制执行所有要求 许可证: : 用法: $guid = '5c33db4b-1234-4567-7889-a8f849de6b68'; $userid = 'AFPPR46KLASDJLKJDW788CASDFFHF6J6ERFIWCEI7GP4YDXFRBEJI'; include('...

    SeasLog-其他

    php内置error_log、syslog函数功能强大且性能极好,但由于各种缺陷(error_log无错误级别、无固定格式,syslog不分模块、与系统日志混合),灵活度降低了很多,不能满足应用需求。 好消息是,有不少第三方的log类库...

    php-childprocess:PHP 子进程库

    $manager-&gt;on('exit', function () use ($process) { error_log('exit'); exit;});// 做其他事情或等待创建子进程简单运行在子平行空间运行闭包函数declare(ticks = 1) ;$manager = new ChildProcess();$child = $...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是...

    PHP MYSQL注入攻击需要预防7个要点

    1:数字型参数使用类似intval,floatval这样的方法强制过滤。 2:字符串型参数使用类似mysql_real_escape_string这样的方法强制过滤,...6:以日志的方式记录错误信息:log_errors=on和error_log=filename,定期排查,

Global site tag (gtag.js) - Google Analytics