Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apache日志行太长_Php_Apache_Cloud Foundry_Mod Security - Fatal编程技术网

Php Apache日志行太长

Php Apache日志行太长,php,apache,cloud-foundry,mod-security,Php,Apache,Cloud Foundry,Mod Security,我有云铸造和php应用程序与mod秒 该应用程序从浏览器接收json帖子。这篇文章包含几个以64为基数编码的图像,并在一些行中快速剪切了这些图像: 2020-05-01T13:49:31.69+0200 [APP/PROC/WEB/0] OUT 11:49:31 httpd modsec body":["{\"image1\":\"data:image/png;base64, ... 2020-05-01T13:49:31.69+0200 [APP/PROC/WEB/0] OUT tTHNrVz

我有云铸造和php应用程序与mod秒

该应用程序从浏览器接收json帖子。这篇文章包含几个以64为基数编码的图像,并在一些行中快速剪切了这些图像:

2020-05-01T13:49:31.69+0200 [APP/PROC/WEB/0] OUT 11:49:31 httpd modsec body":["{\"image1\":\"data:image/png;base64, ...
2020-05-01T13:49:31.69+0200 [APP/PROC/WEB/0] OUT tTHNrVze+6IgS/ftH89uE2lw
有没有办法连接这些日志

我希望:

2020-05-01T13:49:31.69+0200 [APP/PROC/WEB/0] OUT 11:49:31 httpd modsec body":["{\"image1\":\"data:image/png;base64, ...  tTHNrVze+6IgS/ftH89uE2lw\"}

不要依赖终端上打印的日志,有时它们很漂亮,因为它们有颜色。然而,最好和最完整的选择是依赖日志文件,因为它们不应该有缩写(希望如此)

对于Apache,有两种类型的Apachehttpd服务器日志文件:

  • 错误日志
  • 访问日志
  • 根据您使用的操作系统,您可能会在不同的位置找到日志文件

    要查找apache日志文件的确切位置,可以使用grep命令:

    grep ErrorLog/usr/local/etc/apache22/httpd.conf
    grep ErrorLog/etc/apache2/apache2.conf
    grep ErrorLog/etc/httpd/conf/httpd.conf
    
    示例输出可以是:
    ErrorLog”/var/log/httpd error.log“

    访问日志也一样:

    grep CustomLog/usr/local/etc/apache22/httpd.conf
    grep CustomLog/etc/apache2/apache2.conf
    grep CustomLog/etc/httpd/conf/httpd.conf
    

    另一种可能的解决方案是将base-64对象直接打印到文件中。

    一种可能是查看Apache指令。这允许您简化每个Apache日志中的信息,因此您可以创建一种可以缩短宽度(减少冗余)的格式,这可能对您的屏幕有所帮助


    我不知道在Apache中连接日志的方法。它只是监听PHP命令,因此PHP代码可以将其捆绑起来,只调用
    error\u log
    一次。

    我认为这不是Apache Web服务器或mod\u sec的问题。CloudFoundry将从其上运行的应用程序中读取日志,这些日志将被写入STDOUT/STDERR。如果您有一个应用程序在Cloud Foundry上运行,并且如果您将一个PHP应用程序部署到Cloud Foundry,那么这就是PHP buildpack将如何配置PHP和Apache Web服务器来托管您的PHP应用程序的日志记录方式

    您不能简单地登录到文件,因为在CloudFoundry上运行的应用程序的文件系统是短暂的。它会在快乐的时候工作,但是当某些东西失败并且你的应用程序崩溃时,它就不能工作了。当应用程序崩溃时,文件系统(包括您写入的日志)将消失,这使得故障排除变得非常困难

    关于您看到的行为,CloudFoundry日志系统对单行日志条目有大小限制。如果您试图编写一个超出限制的单行日志条目,日志系统将自动拆分该行,您将得到两个日志行。我怀疑这就是这里发生的事情

    我看了一下,但在拆分前找不到记录在案的直线长度最大值。我能找到的最好的是。不过,它似乎并没有明确解释事情是如何安排的

    因为我找不到正式记录的值,所以我想测试和验证长度。为此,我在Pivotal Web Services(运行最新版本的OSS Cloud Foundry)上部署了一个测试应用程序,并编写了一些长日志行(如果您想查看测试代码,请告诉我)。在拆分行之前,我能得到的最大值是61441字节(如果您有多字节字符,如
    它将更快地拆分)。这与上面讨论链接中提到的旧行为相匹配。您的里程可能会有所不同,具体取决于您使用的CF版本和平台的配置方式

    不管限制的确切值是多少,总会有一些限制。您可以尝试重新构建日志条目,即在事后将它们重新缝合在一起,也可以将信息存储在其他地方。使用数据库之类的服务或将日志条目直接发送到syslog


    Syslog是一个很好的选择,但是HTTPD内置了对它的支持,它不在CloudFoundry容器中。使用管道日志功能和使用外部程序发送日志可能更容易

    问题是,所有文件都实时打印在终端上,而且在文件日志中,我遇到了以下问题:(通常你是对的,但运行在Cloud Foundry上的应用程序会将其所有日志写入STDOUT/STDERR。此信息由日志系统捕获并提供给用户。原因是CF中的容器是短暂的,因此,如果你的应用程序崩溃,你的日志文件将消失,你不知道它崩溃的原因。它是否可以将默认STDOUT/STDERR重定向到一个文件或解决方案?@kitsune-我建议将日志记录到一个文件。有关原因和潜在解决方案的详细信息,请参阅我的答案。日志是由Apache使用mod sec创建的。它不是由PHP代码生成的。``SecAuditLog'/bin/sed-u-e's#^#modsec#”SecAuditLogFormat JSON``我明白了,我没有解决方案。我问我是否有解决方案。