2010-06-07 7 views
24

Comment insérer un saut de ligne en utilisant error_log() en phpen nouvelle ligne error_log en php

j'ai essayé d'utiliser <br> et \n mais ceux qui ne fonctionnait pas.

+4

Je ne ferais pas ça. Je m'attendrais à ce que chaque ligne dans le journal des erreurs soit une seule entrée. Répandre un message sur deux lignes ou plus le casserait. – Gumbo

Répondre

45

Utilisez des guillemets doubles lorsque vous mettez le message d'erreur:

error_log("This is a two lined message. \nThis is line two."); 

devrait fonctionner.

error_log('This is a one lined message. \nThis is the same line still.'); 

ne fonctionnera pas: notez les guillemets simples.

+0

Vous n'avez pas donné les 2ème et 3ème paramètres (le nom du fichier journal des erreurs) – Satish

+7

Alors? Les autres paramètres sont facultatifs. Peut-être que vous devriez spécifier ce que vous voulez réaliser, car AFAICT vous vient de recevoir la solution à votre problème. – wimvds

+0

@Satish, désolé pour le commentaire en retard, mais, si nous ne mettons pas de second et troisième paramètre, le journal est écrit dans le fichier journal des erreurs par défaut de php: 'php_errors.log' qui est le bienvenu. – Pupil

3

Je rencontre parfois ce problème, mais certains interprètes PHP ne fonctionnent pas toujours correctement avec \n par eux-mêmes. Ma solution laide nécessite l'ajout du code ASCII brut pour newline, \10, semble faire l'affaire. Donc, essayez \n\10:

error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10"); 

Il est malheureux de code à la recherche, vous pouvez envelopper ceci dans votre propre fonction ... mais cela rend le journal des erreurs semble beaucoup mieux si vous voulez quelque chose à se démarquer. Je n'ai pas la moindre idée de la raison pour laquelle cela fonctionne mieux ... ne se soucie pas assez de savoir, mais si quelqu'un sait pourquoi, ce serait cool d'entendre.

21

PHP_EOL gérer les nouvelles lignes sur plusieurs plates-formes:

error_log("Error message".PHP_EOL, 3, 'error.log'); 
+1

Nice, fonctionne très bien avec PHP s'exécutant sur IIS. \ 10 n'a pas fonctionné mais celui-ci fonctionne. – Jordi

0

Lorsque le débogage, si vous voulez faire de votre erreur la ligne du journal se démarquer pendant que vous regardez le journal « -f queue », j'utiliser une petite fonction comme cela pour faire ressortir la ligne et facilement lisible. Il suffit de jeter dans un espace blanc, et un terme commun comme «CUSTOM_LOG» à des fins de grepping plus tard.

highlight_error_log('Msg here'); 

function highlight_error_log($str){ 
    error_log('CUSTOM_LOG:   ' . $str . '   '); 
} 
16

Comme mentionné précédemment, vous pouvez utiliser PHP_EOL ou utiliser des guillemets doubles afin de sortir une nouvelle ligne à votre fichier journal. Quoi qu'il en soit, lorsque vous utilisez la console Linux pour déboguer l'application, la commande tail affiche la nouvelle ligne \\\\n.

solution simple est d'utiliser sed afin de remplacer \\\\n avec \\n:

tail -f file | sed 's/\\n/\n/g' 

Voir cette réponse:
https://serverfault.com/a/126409

+0

et comment l'utiliser avec grep? – BIOHAZARD

+0

Ceci est en fait la preuve que error_log ne sort pas correctement les caractères de nouvelle ligne. la queue n'échappe pas à rien. Ce fut la seule chose qui a résolu le problème pour moi. – Phil

Questions connexes