加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

总结使用不同的方法记录错误报告日志

发布时间:2022-08-02 15:57:32 所属栏目:PHP教程 来源:详解
导读:在之前的文章中给大家带来了《带你一起了解PHP的错误类型和错误级别》,其中详细介绍了PHP中的错误类型和错误级别,本篇文章我们一起来看一下PHP中错误日志的配置和使用方法。希望对大家有帮助! 在我们之前的文章中,我们介绍了PHP错误的异常处理、错误类型
  在之前的文章中给大家带来了《带你一起了解PHP的错误类型和错误级别》,其中详细介绍了PHP中的错误类型和错误级别,本篇文章我们一起来看一下PHP中错误日志的配置和使用方法。希望对大家有帮助!
 
 
  在我们之前的文章中,我们介绍了PHP错误的异常处理、错误类型还有错误级别,接下来我们来介绍一下PHP中错误日志的配置和使用方法。对于 PHP 开发者来说,一旦某个项目投入使用,应该立即将配置文件 php.ini 中的 display_errors 选项关闭,以免因为这些错误而透露路径、数据库连接、数据表等信息。
 
  再投入使用的任何一个项目中,不可避免的会有错误的出现,有些错误报告对开发者是有用的,这时候我们可以通过单独的文本文件来进行错误报告的日志记录。这样的话,开发人员可以更轻松的进行查看系统是否存在问题。将PHP配置文件中的 log_errors 开启的话,就可以将程序中的错误报告写进错误日志中了。
 
  其中这份错误报告会自动记录到服务器的日志文件中,想要发送到系统的syslog中,也就是系统日志中,也是可以的。接下来我们就一起来看一下怎样去实现这样错误处理的方法吧。
 
  通过指定文件记录错误报告
 
  想要实现使用目标文件来记录错误报告日志,其中重要的是需要让这个制定的文件的位置在文档根目录外面,这样的话受到攻击的可能性较低,而且这个指定文件需要拥有一定的权限,首先我们先来看一下我们需要针对php.ini的配置指令做出怎样的修改:
 
  log_errors = On ;决定日志语句记录的位置
 
  log_errors_max_len = 1024 ;设置每个日志项的最大长度
 
  error_reporting = E_ALL ;将会向PHP报告发生的每个错误
 
  display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告
 
  error_log = /usr/local/error.log ;指定产生的 错误报告写入的日志文件位置
 
  按照上述的方式修改php.ini文件后,成功设置之后,在运行PHP的脚本文件的时候,就不会在浏览器中有显示错误报告了,这时候错误报告就都显示在这个我们设置的目标文件中,也就是错误日志中了。
 
  另外还需要注意的是,这个目标文件中可以记录error_reporting定义的错误也可以通过 error_log() 函数将错误信息放到服务器中的错误日志或者这个目标文件中。
 
  error_log() 函数的语法格式如下:
 
 
  error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool
 
  其中需要注意的是:
 
  $message表示需要记录的错误信息;$destination表示目标,也就是错误消息被发送到的目的地。它的含义描述于以上,由 $message_type 参数所决定;$extra_headers表示额外的头。当 $message_type 设置为 1 的时候使用。 该信息类型使用了 mail() 的同一个内置函数。
 
  $message_type表示设置错误应该发送到何处。可能的信息类型有以下几个:
 
  0:(默认值)将 $message 发送到 PHP 的系统日志,使用操作系统的日志机制或者一个文件,取决于配置文件中 error_log 设置了什么;
 
  1:将 $message 发送到参数 $destination 设置的邮件地址。 第四个参数 $extra_headers 只有在这个类型里才会被用到;(2已经被弃用了)
 
  3:$message 被发送到位置为 $destination 的文件里。字符 $message 不会默认被当做新的一行;
 
  4:将 $message 直接发送到 SAPI 的日志处理程序中。
 
  接下来我们通过示例看一下以登入 Mysql 数据库为例,当登入失败时记录错误信息。示例如下:
 
 
 
 
 
 
 
 
  <?php
 
      $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
 
      if (!$link) {
 
          error_log('Mysql 数据库连接失败!',0);
 
          exit();
 
      }
 
  ?>
 
  如果以登入Oracle数据库出现问题的处理为例,该函数的使用示例如下:
 
 
 
 
 
 
 
 
 
 
 
  <?php
 
  if(!Ora_Logon($username, $password)){
 
  error_log("Oracle数据库不可用!", 0); //将错误消息写入到操作系统日志中
 
   }
 
  if(!($foo=allocate_new_foo()){
 
   error_log("不行!", 1, ". mydomain.com"); //发送到管理员邮箱中
 
   }
 
  error_log("不行!", 2, "localhost:5000"); //发送到本机对应5000端口的服务器中
 
  error_log("不行!", 3, "/usr/local/errors.log"); //发送到指定的文件中
 
  ?>
 
  代码运行之后就会在php.ini 配置文件中 error_log 一项所设置的目录中生成对应的错误日志文件。接下来我们看一下错误信息记录到操作系统的日志里是什么情况。
 
  通过系统日志记录错误报告
 
  上文中我们讲到了将使用目标文件来记录错误报告日志,接下来我们就来看一下将错误信息放到操作系统的日志里面,这是可以实现的,其中不同的操作系统,它们的日志管理也是不一样的,下面我们都是使用常见的windows举例,Windows 上错误将发送到事件日志里,可以通过事件查看器来查看。
 
  通过什么样的方法才能够在操作系统的日志里有错误信息呢?这时候我们可以通过php.ini 配置文件中 error_log,接下来我们看一下应该怎样修改php.ini中的配置文件。
 
  修改error_reporting = E_ALL用来报告所发生的每个错误;修改display_errors = Off 用来不显示满足上条指令所定义规则的所有错误报告;修改log_errors = On用于决定日志语句记录的位置;修改log_errors_max_len = 1024用于设置每个日志项的最大长度;修改error_log = syslog用于指定产生的错误报告写入操作系统的日志里 。
 
  虽然通过前面介绍的 error_log() 函数,可以向 syslog 中发送定制的消息,想要实现将错误信息放到操作系统的日志里面,我们还需要三个函数的帮助,下面我们就来简单的介绍一下:
 
  openlog()函数
 
  该函数是用来打开连接的,用于向系统中写入日志信息做的准备。并且每个日志的消息中都有它的一个参数是字符串形式的。
 
  syslog()函数
 
  该函数拥有两个参数,它的作用是用来给系统中的日志给一个特定消息,第一个参数就是用来设置这个消息的优先级,第二个参数即使提供字符串,这个字符串就是这个特定的消息。
 
  closelog()函数
 
  该函数就是用来关闭连接的,这个连接就是上文中openlog() 函数打开的。

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读