2012-06-13 13 views

Antwort

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

Diese Konfiguration wird den Fehler Logfile drehen, wenn es mit einer Größe von 5 Megabyte, und das Suffix zu dem Logfile Namen des Formular errorlog.YYYY-mm-dd-HH_MM_SS wird erstellt erreicht.

Weitere lesen offiziellen Dokumentation von apache.org Link Here

+7

-1 Ich bin mir nicht sicher, warum dies eine akzeptierte Antwort ist.Dies verhindert nichts, um das Abschneiden einzelner Einträge im Protokoll zu verhindern. –

+0

Dadurch werden lange Protokolle tatsächlich abgeschnitten, da sie durch die Länge der Rohrlänge des Betriebssystems eingeschränkt sind. –

0

die Frage oben Lesen machte mich fragen, ob das Problem innerhalb von Apache ist. Ja, die Kürzung erfolgt in PHP für Apache wird sogar mehr als 10.000 Zeichen erlauben. Hier ist ein Perl-Skript Apache der Fähigkeit der Beurteilung lange Fehlermeldungen in sein Protokoll zu schreiben:

#!/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

Ich habe das gleiche Problem mit Nginx. –

1

PHP Manual sagt über die Einstellungen log_errors_max_len in php.ini:

die maximale Länge von log_errors in Bytes Set . (...) Der Standardwert ist 1024 und 0 erlaubt es überhaupt keine maximale Länge anzuwenden.

Einige schlagen vor, dass Sie es zum Beispiel tun, ändern können:

ini_set("log_errors_max_len", 2048); 

Aber das Handbuch ergänzt:

Diese Länge protokolliert Fehler angewendet, um $ Fehler und auch angezeigt php_errormsg, aber nicht explizit aufgerufene Funktionen wie error_log().

Ich versuche eine Lösung zu finden. Wird bearbeiten, wenn ich es tue.

3

Wie Leopoldo said, Einstellung log_errors_max_len scheint in dieser Situation ziemlich nutzlos, und PHP-Handbuch gibt dies deutlich.

Die einzige Lösung, die ich der Lage war, so weit zu finden, ist zu verwenden:

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

Der zweite Parameter von error_log() können Sie Nachricht auf eine benutzerdefinierte Datei umleiten. Der letzte Parameter sollte also ein Pfad zu einer benutzerdefinierten Protokolldatei sein.

Auf diese Weise bekomme ich volle Fehlermeldung und, was für jemand wichtiger sein könnte, sind nicht ASCII-Zeichen dort klar lesbar (nicht sicher, obwohl mein schlecht sein könnte, aber wenn ich sie mit Standard-Protokoll protokolliere Datei - Ich bekomme Dinge wie \xd0\xbf).