2010-06-07 12 views
24

Come inserire un ritorno a capo durante l'utilizzo error_log() in phpnuova riga in error_log in php

ho cercato di usare <br> e \n ma quelli non ha funzionato.

+4

Io non lo farei. Mi aspetto che ogni riga nel log degli errori sia una singola voce. Diffondere un messaggio su due o più linee potrebbe rompere questo. – Gumbo

risposta

45

Utilizzare le virgolette doppie quando mettono il messaggio di errore:

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

dovrebbe funzionare.

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

non funziona: notare le virgolette singole.

+0

Non hai specificato il 2 ° e il 3 ° parametro (il nome del file di registro degli errori) – Satish

+7

Quindi? Gli altri parametri sono opzionali. Forse dovresti specificare cosa vuoi ottenere, perché AFAICT ti è appena stata data la soluzione al tuo problema. – wimvds

+0

@Satish, scusa per il commento in ritardo, ma, se non inseriamo alcun secondo e terzo parametro, il log viene scritto nel file di log degli errori predefinito di php: 'php_errors.log' che è il benvenuto. – Pupil

3

Occasionalmente mi imbatto in questo problema, ma alcuni interpreti PHP non sempre giocano equamente con \n da soli. La mia brutta soluzione richiede l'aggiunta del codice ASCII grezzo per newline, \10, sembra che faccia il trucco. Quindi cercate \n\10:

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

E 'miserabile codice cercando, così si potrebbe desiderare di avvolgere questo nella vostra propria funzione ... ma rende il log degli errori aspetto molto meglio se si desidera qualcosa per distinguersi.

Non ho nemmeno la minima idea del perché funzioni meglio ... non importa abbastanza per scoprirlo, ma se qualcuno sa perché, sarebbe bello sentirlo.

21

PHP_EOL gestire a capo su più piattaforme:

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

Bello, funziona perfettamente con PHP in esecuzione su IIS. \ 10 non ha funzionato ma questo lo fa – Jordi

0

Quando il debug, se si vuole rendere la vostra linea di Registro errori spiccano mentre si sta guardando il registro 'tail-f', io uso un po 'di funzione in questo modo per far risaltare la linea e facilmente leggibile.

Basta inserire uno spazio bianco e un termine comune come "CUSTOM_LOG" per gli scopi di grepping successivi.

highlight_error_log('Msg here'); 

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

Come accennato prima, è possibile utilizzare sia PHP_EOL o utilizzare le virgolette al fine di uscita una nuova riga al file di log.

In ogni caso, quando si utilizza la console di linux per eseguire il debug dell'applicazione, il comando tail mostrerà la nuova riga come \\\\n.

Soluzione semplice è quella di utilizzare sed al fine di sostituire \\\\n con \\n:

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

Vai a questa risposta:
https://serverfault.com/a/126409

+0

e come usarlo con grep? – BIOHAZARD

+0

Questa è in realtà la prova che error_log non sta emettendo correttamente i caratteri newline. la coda non sfugge a nulla. Questa è stata l'unica cosa che ha risolto il problema per me. – Phil