Le Closelog () de PHP est idempotent, et il n'y aura aucune erreur lorsqu'il sera appelé plusieurs fois, mais cela peut masquer le problème du nettoyage répété des ressources dans le programme. Par exemple, une fonction est appelée à plusieurs reprises, mais Closelog () est exécuté à chaque fois, ce qui peut signifier que la logique de gestion des ressources n'est pas claire.
Méthode de dépannage:
Encapsuler les appels liés au journal pour éviter d'appeler le roselog () directement à plusieurs endroits.
Utilisez des classes ou des schémas de wrapper en journaux (tels que des singletons) pour contrôler le cycle de vie de la connexion en journal.
Le système de journal peut avoir des tampons après syslog () . Si Closelog () est immédiatement fermé () , il peut entraîner l'écriture du journal à temps, en particulier dans des environnements de concurrence ou spéciaux élevés.
Méthode de dépannage:
Introduire un retard après l'appel Syslog () (utilisé uniquement pour les tests et la vérification, non recommandés pour la production);
Essayez d'appeler Closelog () à la fin du script ou au stade de destruction, plutôt que de le fermer immédiatement après chaque journal.
<span><span><span class="hljs-title function_ invoke__">openlog</span></span><span>(</span><span><span class="hljs-string">"example"</span></span><span>, LOG_PID | LOG_PERROR, LOG_LOCAL0);
</span><span><span class="hljs-title function_ invoke__">syslog</span></span><span>(LOG_INFO, </span><span><span class="hljs-string">"Un journal de test"</span></span><span>);
</span><span><span class="hljs-comment">// Ne pas immédiatement closelog(),Il doit être appelé uniformément à la fin du script</span></span><span>
</span></span>
Parfois, même si Closelog () est appelé correctement, le journal n'est pas écrit. La raison possible est qu'OpenLog () utilise un type de journal invalide (installation) ou que le système n'activait pas les autorisations de journal pour ce type.
Méthode de dépannage:
Vérifiez si l'installation utilisée dans OpenLog () est prise en charge par le système;
Vérifiez si l'installation correspondante est activée dans le fichier de configuration Syslog du système (tel que /etc/rsyslog.conf ou /etc/syslog.conf );
Vérifiez les autorisations du fichier journal ou utilisez la commande Logger pour tester manuellement.