6
votes

Comment économiser des journaux dans PHP

Comment puis-je enregistrer des journaux dans PHP? Existe-t-il une fonction "magique" disponible en PHP pour le faire, ou une bibliothèque? Ou devrais-je avoir à fopen fichier à chaque fois et vider-ci? Je veux enregistrer mes journaux dans le fichier texte.

Merci d'avance :)

php

1 commentaires

Je veux juste que les données Print_R. quelque chose pour ça?


5 Réponses :


4
votes

Tout dépend de ce que vous essayez de vous connecter. Par défaut, vous aurez déjà un fichier ERROR_LOG qui est essentiellement un fichier texte brut. Si vous parlez d'événements de journalisation dans votre code pour le débogage ou l'activité de suivi dans un script, vous devrez écrire votre propre gestionnaire de journal pour cela, mais c'est très simple. Comme une autre affiche indique que vous pouvez appuyer sur le contenu du journal d'erreur à l'aide de la fonction ERROR_LOG (), mais cela permettrait à certains fichiers journaux très non gênants IMV.


0 commentaires

12
votes

Si vous ne souhaitez pas utiliser sa propre implémentation ou simplement faire fopen-trucs, vous utilisez la fonction intégrée error_log ('string to journal'); . Cela écrira la chaîne souhaitée dans le journal des erreurs de votre logiciel serveur.


1 commentaires

PHP vous permet de configurer ce que l'enregistreur par défaut utilise le paramètre error_log php.ini: PHP .NET / erreur-journal



9
votes

J'ai écrit une classe simple pour le faire. Peut-être que vous le trouverez utile. XXX


9 commentaires

Merci Alex JL, mais cela sonne nouveau à moi $ this-> app_id = auto :: real_unique_string () . Comment fonctionnera le processus d'identification pour les journaux? Comment l'identifiant de processus peut-il m'aider plus tard lorsque je vis des journaux?


J'utilise le processus de processus pour rester là où la ligne provient de droite. Il sera unique par page avec le journal, alors dites que vous avez 5 personnes accéder à votre page à la fois - il y aura juste une inondation de lignes dans le journal. L'ID Cela vous aide à savoir quelles lignes sont venues du même processus. Vous pouvez toujours retirer cela si vous n'en avez pas besoin.


Cela semble être une version extrêmement compliquée de php error_log ($ message, 3, $ log_name);


@R. Bemrose Cela vient d'envelopper Fopen et F Close avec quelques commodités ... Je ne vois pas comment cela pourrait être considéré comme «extrêmement compliqué».


Ok merci alex jl. Maintenant j'ai compris.


@R. Bemrose Ce n'est pas du tout compliqué. La seule chose que je n'ai pas comprise jusqu'à présent, c'est que le deuxième paramètre passe à la fonction de hachage ( microtime (1) (heure () / 147)) ).


@ALEX JL: OK, laissez-moi reformuler cela. Ceci semble être un complètement non synchronisé de réimplémentation du error_log ($ MSG, 3, $ log_name) Fonction ou simplement à l'aide d'un Error_Log de PHP.INI < / Code> Réglage INI Pour envoyer le gestionnaire d'erreur par défaut à un fichier et à l'aide d'un fichier error_log ($ msg) .


@R. Bemrose Non, ce n'est pas vrai. Il fournit une commodité supplémentaire comme A> Vérification du fichier journal existant et fournissant une valeur par défaut (il devrait probablement vérifier qu'il est écritable, en réalité) B> Ajout automatique d'un identifiant de processus, d'un nom de page, d'une date et d'une nouvelle ligne après votre message. J'aurais pu utiliser Error_Log au lieu de fopen / fwrite / fclose, mais cela semble plutôt non valable si vous n'êtes pas d'enregistrement d'erreurs. Je voudrais probablement envelopper Errrist_Log comme ceci pour fournir les fonctionnalités susmentionnées de toute façon.


@Nitesh Panchal Honnêtement, la fonction real_unique_id est plutôt superflue ... cette partie pourrait être remplacée par simplement UNIQID (). Cela venait d'un autre code que j'ai, en fait. Je l'ai édité pour le rendre plus simple.



5
votes

Si vous n'êtes pas dans l'utilisation des fonctions de traitement des erreurs PHP ( http: //www.php.net/manual/fr/ref.errorfunc.php ) que les autres réponses ont mentionnées, voici une classe d'enregistreur simple meurtrière que j'ai utilisée auparavant. Les avertissements standard s'appliquent, comme je ne l'ai pas utilisé dans une application à haut risque ou sur un site lourdement trafiquant (bien que cela soit bien).

<?php
require('Logger.php');
Logger::debug('test');
Logger::warn('bwah');
Logger::info('omg');
?>


1 commentaires

Heureux que vous l'aimiez, et merci pour le vote. Et oui, il s'agit d'un exemple de livre de texte de quand utiliser static. Acclamations.



4
votes

La dernière réponse est de 2010, il a donc besoin d'une bouffée d'air frais. Je partage avec vous ma classe PHP que j'utilise dans mes programmes. J'ai suivi une approche similaire de @ sam-bisbee de la réponse du code> de Sam-Bisbee, il est donc facile d'ajouter de nouvelles fonctionnalités et de nouvelles fonctionnalités, mais je l'ai également rendue plus flexible à utiliser dans différents programmes / scripts.

i Mettez ma classe dans logg.php code>, vous pouvez le faire également. P>

My Class H2>
//this:
{
    //logging information to different file in different path
    Logg::addInfo(['Some info', 15], 'AnotherFileName', '/some/different/path/');
}
//is equal to this:
{
    //changing filename and path
    Logg::$fileName = 'AnotherFileName';
    Logg::$filePath = '/some/different/path/';

    //logging information
    Logg::addInfo(['Some info', 15]);

    //changing filename and path back to its original values
    Logg::$fileName = 'ExampleName_'.date("Y_m_d");
    Logg::$filePath = 'C:/Apache24/htdocs/public_html/logs/';
}


0 commentaires