2010-06-07 82 views
24

Cómo insertar un salto de línea durante el uso de error_log() en phpnueva línea en error_log en php

me trató de usar <br> y \n pero los que no funcionó.

+4

yo no haría eso. Esperaría que cada línea en el registro de error sea una sola entrada. Difundir un mensaje en dos o más líneas rompería esto. – Gumbo

Respuesta

45

Use comillas dobles cuando se pone el mensaje de error:

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

debería funcionar.

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

no funcionará: tenga en cuenta las comillas simples.

+0

No ha dado el 2do y 3er parámetro (el nombre del archivo de registro de error) – Satish

+7

¿Entonces? Los otros parámetros son opcionales. Tal vez debas especificar lo que quieres lograr, porque AFAICT te acaba de dar la solución a tu problema. – wimvds

+0

@Satish, perdón por el comentario tardío, pero, si no ponemos ningún segundo y tercer parámetro, el log se escribe en el archivo de registro de errores predeterminado de php: 'php_errors.log', que es bienvenido. – Pupil

3

Ocasionalmente encuentro este problema, pero ciertos intérpretes PHP no siempre juegan limpio con \n solos. Mi fea solución requiere agregar el código ASCII en bruto para newline, \10, parece hacer el truco. Así que trate de \n\10:

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

Es triste mirando el código, así que sería bueno para envolver esto en su propia función ... pero hace que el registro de errores se parecen mucho mejor si quieres algo a destacar.

Tampoco tengo idea de por qué funciona mejor ... no me importa lo suficiente como para descubrirlo, pero si alguien sabe por qué, sería genial escucharlo.

21

PHP_EOL gestionar los saltos de línea en múltiples plataformas:

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

Bueno, funciona bien con PHP ejecutándose en IIS. \ 10 no funcionó, pero este sí. – Jordi

0

Cuando la depuración, si desea hacer su línea de registro de errores se destacan mientras estás viendo el registro de 'tail-f', yo uso un poco de la función así para hacer que la línea se destaque y sea fácil de leer.

Simplemente agregue un espacio en blanco y un término común como 'CUSTOM_LOG' para fines posteriores de grepping.

highlight_error_log('Msg here'); 

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

Como se mencionó antes, puede utilizar cualquiera PHP_EOL o utilizar comillas dobles con el fin de generar una nueva línea en el archivo de registro.

De todos modos, cuando se utiliza la consola de Linux para depurar la aplicación, el comando tail mostrará la nueva línea como \\\\n.

solución simple es utilizar sed con el fin de reemplazar \\\\n con \\n:

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

Ver esta respuesta:
https://serverfault.com/a/126409

+0

y cómo usarlo con grep? – BIOHAZARD

+0

Esto es en realidad una prueba de que error_log no está produciendo caracteres de nueva línea correctamente. la cola no escapa automáticamente de nada. Esto fue lo único que resolvió el problema para mí. – Phil