如何使apache错误日志条目更长

时间:2012-06-13 18:59:40

标签: php apache stack-trace error-logging error-log

我正在使用php的'error_log()'向apache错误日志发送一些相当长的堆栈跟踪,并且条目被截断。我还没有办法让条目更长。 有什么想法吗?

5 个答案:

答案 0 :(得分:8)

通过error_log()的错误消息的最大长度的默认限制是1024字节。

详细信息http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors-max-len

答案 1 :(得分:3)

作为Leopoldo said,在这种情况下设置log_errors_max_len似乎毫无用处,PHP手册明确说明了这一点。

到目前为止,我能找到的唯一解决方案是使用:

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

error_log()的第二个参数允许您将邮件重定向到自定义文件。因此,最后一个参数应该是自定义日志文件的路径。

这样我就会收到完整的错误消息,对于某些人来说可能更重要的是,非ASCII字符在那里清晰可读(但不确定,可能是我的坏,但是当我用标准日志文件记录它们时 - 我得到像\xd0\xbf)这样的东西。

答案 2 :(得分:1)

PHP Manual说明 php.ini 中的设置log_errors_max_len

  

设置log_errors的最大长度(以字节为单位)。 (...)默认是   1024和0允许不应用任何最大长度。

有人建议您可以更改它,例如:

ini_set("log_errors_max_len", 2048);

但手册补充道:

  

此长度适用于记录的错误,显示的错误以及   $ php_errormsg,但不要显式调用诸如的函数   error_log中()

我正在努力寻找解决方案。如果我这样做会编辑。

答案 3 :(得分:0)

阅读上面的问题让我想知道问题是否在Apache内部。 是的,截断发生在PHP中,因为Apache将允许甚至超过10,000个字符。这是一个Perl脚本,用于评估Apache将长错误消息发布到其日志中的能力:

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

答案 4 :(得分:-3)

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

此配置将在错误日志文件达到5兆字节大小时轮换错误日志文件,并且将创建日志文件名称的后缀,格式为errorlog.YYYY-mm-dd-HH_MM_SS。

有关apache.org Link Here

的更多阅读官方文档