2012-06-13 13 views

risposta

-3
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M" 

Questa configurazione ruoterà file di log di errore quando si raggiunge una dimensione di 5 megabyte, e il suffisso al nome del file di registro viene creato nella forma errorlog.YYYY-mm-dd-hh_mm_ss.

Per la documentazione ufficiale più leggere da apache.org Link Here

+7

-1 Non sono sicuro del motivo per cui questa è una risposta accettata.Questo non farà nulla per prevenire il troncamento delle singole voci nel registro. –

+0

Questo troncherà effettivamente i registri lunghi perché è limitato dal limite della lunghezza del tubo del sistema operativo. –

0

Leggendo la domanda di cui sopra mi ha fatto chiedo se il problema è all'interno di Apache. Sì, il troncamento si verifica all'interno di PHP perché Apache consente anche oltre 10.000 caratteri. Ecco uno script Perl valutare la capacità di Apache di inviare messaggi di errore lunghi nel suo registro:

#!/usr/bin/perl -w 
# 
# Test error log length limitations 
# Result: no limitation 
# 
# 

use strict; 
use CGI; 


my $query = CGI->new; 
print $query->header; 

print "<html><body>You have reached " 
    ."cgi-bin/admin/test_error_log.pl" 
    ."</body></html>\n"; 
print STDERR "This is an error message from $0\n"; 
print STDERR " 
[Above should be a blank line] here is a multiline error message 
here is the third and final line of it\n"; 
print STDERR 'abcde' x 200; #1,000 characters 
print STDERR "\nAbove is 1,000 characters of output of 'abcde'\n"; 
print STDERR 'vwxyz' x 2000; #10,000 characters 
print STDERR "\nAbove is 10,000 characters of output of 'vwxyz'\n"; 
+0

Ho lo stesso problema con Nginx. –

1

PHP Manual dice sulle impostazioni log_errors_max_len in php.ini:

Impostare la lunghezza massima di log_errors in byte . (...) L'impostazione predefinita è 1024 e 0 consente di non applicare alcuna lunghezza massima.

Alcuni suggeriscono che si può cambiare facendo ad esempio:

ini_set("log_errors_max_len", 2048); 

ma il manuale aggiunge:

Questa lunghezza viene applicata a errori registrati, visualizzati gli errori e anche per $ php_errormsg, ma non per chiamare esplicitamente funzioni come error_log().

Sto cercando di trovare una soluzione. Modificherà se lo faccio.

3

Come Leopoldo said, l'impostazione log_errors_max_len sembra piuttosto inutile in questa situazione, e il manuale PHP lo afferma chiaramente.

L'unica soluzione sono stato in grado di trovare finora è quello di utilizzare:

error_log("Long error message...", 3, CUSTOM_LOG_FILE); 

Il secondo parametro di error_log() consente di reindirizzare messaggio in un file personalizzato. Pertanto, l'ultimo parametro dovrebbe essere un percorso per un file di registro personalizzato.

In questo modo ricevo il messaggio di errore completo e, cosa potrebbe essere più importante per qualcuno, i caratteri non ASCII sono chiaramente leggibili lì (non è sicuro, potrebbe essere il mio male, ma quando li registro con il registro standard file - ottengo cose come \xd0\xbf).