Maison  >  Article  >  développement back-end  >  Introduction à l'utilisation de la fonction php error_log()

Introduction à l'utilisation de la fonction php error_log()

怪我咯
怪我咯original
2017-07-10 14:28:451532parcourir

La fonction

error_log() envoie un message d'erreur au journal des erreurs du serveur, à un fichier ou à une cible distante. Sa syntaxe

error_log(message,type,destination,headers);
Paramètres Description
message Obligatoire. Spécifie le message d'erreur à enregistrer.
type
参数 描述
message 必需。规定要记录的错误消息。
type

可选。规定错误应该发送到何处。可能的值:

  • 0 - 默认。消息被发送到 PHP 的系统日志,使用操作系统的日志机制或者一个文件,取决于 php.ini 中如何 error_log 指令。

  • 1 - 消息被发送到参数 destination 设置的邮件地址。第四个参数 extra_headers 只有在这个类型里才会被用到。

  • 2 - 不再使用(仅用在 PHP 3 中)

  • 3 - 消息被发送到位置为 destination 的文件里。字符 message 不会默认被当做新的一行。

  • 4 - 消息被直接发送到 SAPI 日志处理程序中。

destination 可选。规定错误消息的目标。该值由 type 参数的值决定。
headers

可选。规定额外的头,比如 From、Cc 和 Bcc。该信息类型使用了 mail() 的同一个内置函数

仅当 message_type 设置为 1 的时候使用。

应当使用 CRLF (rn) 来分隔多个头。

Facultatif. Spécifie où les erreurs doivent être envoyées. Valeurs possibles :

  • 0 - Par défaut. Les messages sont envoyés au journal système de PHP, à l'aide du mécanisme de journalisation du système d'exploitation ou d'un fichier, selon la directive error_log dans php.ini.

  • 1 - Le message est envoyé à l'adresse email définie par le paramètre destination. Le quatrième paramètre extra_headers ne sera utilisé que dans ce type.
  • 2 - N'est plus utilisé (utilisé uniquement dans PHP 3)
    function logError($object)
    {
     if(DB::isError($object))
     {
      error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$object -> userinfo."\n", 3, "/tmp/php_sql_err.log");
      return true;
     }
     return false;
    }
  • 3 - Le message est envoyé à l'emplacement destination. Le caractère message n'est pas traité comme une nouvelle ligne par défaut.

  • 4 - Le message est envoyé directement au gestionnaire de journaux SAPI.
destination Facultatif. Spécifie la destination du message d'erreur. La valeur est déterminée par la valeur du paramètre type.
en-têtes

Facultatif. Spécifie des en-têtes supplémentaires tels que From, Cc et Bcc. Ce type de message utilise la même fonction intégrée

de mail().
function getNewsContent($news_id, $field="")
{
 global $db;
 $result = $db->getRow("SELECT $field FROM news WHERE news_id = '$news_id'");
 if (logError($result))
 {
  return false;
 }
 return $result;
}

Utilisé uniquement lorsque message_type est défini sur 1.

CRLF (rn) doit être utilisé pour séparer plusieurs en-têtes.

En fait, pour nous, par souci de simplicité, il est généralement plus approprié d'utiliser le type 3 directement pour les logs. fichier à l’emplacement dont vous avez besoin dans le fichier.
Pour illustrer l’utilisation simple de la fonction error_log(), prenons un exemple. Supposons que notre
classe abstraite

de base de données utilise la classe PEAR::DB. Maintenant, je veux enregistrer si notre programme contient des erreurs d'exécution. Ensuite, nous utilisons error_log() pour enregistrer les erreurs d'exécution ou les échecs de nos instructions SQL. Au moins notre classe PEAR::DB fournit la méthode DB::isError() pour savoir s'il y a des erreurs dans un certain objet de résultat d'exécution, puis nous peut Déterminer si une erreur s'est produite lors de l'exécution d'une certaine instruction SQL, puis déterminer s'il faut enregistrer le journal. En même temps, l'objet a un attribut userinfo, qui enregistre la mauvaise instruction SQL. Nous pouvons ensuite construire une telle fonction : <.>

Cette fonction peut enregistrer l'endroit où le mauvais SQL est trouvé, puis enregistrer automatiquement l'heure, la page actuelle et les informations d'instruction SQL erronées dans le /tmp/php_sql_err.log

Ensuite, lorsque nous déboguons le programme, nous constatons que l'extraction des données est incorrecte ou qu'il n'y a pas d'extraction de données, nous pouvons alors afficher le fichier /tmp/php_sql_err.log pour afficher notre page d'erreur et notre instruction SQL erronée.


Bien sûr, nous devons utiliser cette fonction dans le programme où nous exécutons des requêtes SQL. Par exemple, si nous écrivons une fonction pour extraire des informations d'actualité :


Dans celle-ci, nous déterminons si. l'erreur SQL, s'il y a une erreur, renvoie false, puis nous pouvons vérifier le journal pour voir si notre fonction s'exécute comme prévu.
Nous exécutons : tail /tmp/php_sql_err.logVous pouvez voir des informations similaires à celles-ci :

<code>
            $address    = post(&#39;address&#39;);
            $group_add  = explode(&#39;,&#39;,$address);

            $url   ="/usr/local/apache/eyoung/tmp/maillog_".date("Y-m-d").".log";

            foreach($group_add as $value)
            {
                    /** {{{ modify by muzhaoyang -2006.12.13- 记log
                      *  已空格分隔数据,记录的数据为写文本时间 拉票人ID 选手ID 发信地址
                      */
                      $logstr=date("H:i:s")." ".$uid." ".$star_uid." ".$value."\n";
                      error_log($logstr,3,$url);
                    //}}}
             }

</code>
[2006-01-12 11:44:34] -[/news_list . php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** Vous avez une erreur dans votre syntaxe SQL ; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour

pour la bonne syntaxe pour utiliser près de 'FROM news WHERE news_id = '1']
C'est probablement parce que lorsque nous avons sélectionné, nous n'avons pas écrit les noms de champs qui doivent être extraits, alors nous pouvons vérifier le news_list.php fichier, la méthode de fonction getNewsContent () ne lui transmet pas le paramètre $field, ce qui entraîne une erreur d'exécution SQL. Par conséquent, la fonction error_log() permet de vérifier si notre SQL est écrit correctement ou si les paramètres ne sont pas transmis correctement. Cela réduit considérablement la charge de développement et nous permet d'effectuer des

tests unitaires de notre programme. Bien sûr, vous pouvez également utiliser la fonction error_log() pour enregistrer plus de journaux d'erreurs afin de faciliter le développement PHP. Tout dépend de vous. Je l'ai utilisé pour enregistrer des journaux simples dans ce travail

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn