php 输出apache日志文件_apache httpclient 限制日志输出 - CSDN
精华内容
参与话题
  • PHP_Apache日志

    千次阅读 2018-07-13 15:35:09
    1. access_log 访问日志access_log为访问日志,记录所有对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令可以用来简化该日志的内容和格式 2. error_log 错误日志error_log为错误日志,...
    1. access_log 访问日志
    access_log为访问日志,记录所有对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令可以用来简化该日志的内容和格式 
    2. error_log 错误日志
    error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,通常服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件
    通过apache配置文件,找到日志存放地址:
    find / -name "httpd.conf"
    找到配置文件地址,打开它,在里边找到apache的【访问日志】与【错误日志】存放地址

    sudo vi /private/etc/apache2/httpd.conf

    我的存放地址分别在:
    /private/var/log/apache2/error_log
    /private/var/log/apache2/access_log
    一、查看apache错误日志
    tail -f -30  "/private/var/log/apache2/error_log"

    [Fri Jan 13 14:32:52 2017] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
    第一项是错误发生的日期和时间;
    第二项是错误的严重性,LogLevel指令使只有高于指定严重性级别的错误才会被记录;
    第三项是导致错误的IP地址;
    此后是信息本身,在此例中,服务器拒绝了这个客户的访问。服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。
    错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr(标准错误)的信息会作为调试信息原封不动地记录到错误日志中。


    二、同样的,在apache配置文件里找到access_log存放地址
    tail -f -30  "/private/var/log/apache2/access_log"

    看一条典型的access_log的日志记录:
    61.155.149.20 - - [13/Jan/2017:15:42:47 +0800] "GET /category/db/ HTTP/1.1" 200 23225
    1).61.155.149.20 
    这是一个请求到apache服务器的客户端ip,默认的情况下,第一项信息只是远程主机的ip地址,但我们如果需要apache查出主机的名字,可以将 HostnameLookups设置为on,不推荐使用,会大大降低网站速度。
    2). - 
    这一项是空白,使用"-"来代替,用于记录浏览者的标识,对于大多数浏览器,这项都是空。
    3). - 
    也为空,记录浏览者进行身份验证时提供的名字,大多数这项也为空。
    4). [13/Jan/2017:15:42:47 +0800]
    第四项是记录请求的时间,格式为[day/month/year:hour:minute:second zone],最后的+0800表示服务器所处的时区为东八区
    5). "GET /category/db/ HTTP/1.1" 
    这一项最有用,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议"
    6). 200 
    这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误。
    7).23225 
    这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少

    (转载自https://blog.csdn.net/ty_hf/article/details/55504719)

    展开全文
  • Apache日志文件的正则表达式解析 2010-06-22 16:52 by Register, 511 阅读,0评论,收藏,编辑 使用正则表达式分隔Apache日志文件 通用日志格式的Apache日志文件示例: 127.0.0.1 - frank [10/Oct/2000:13:55:36 -...

    来源:https://yq.aliyun.com/articles/44341

    Apache日志文件的正则表达式解析

    2010-06-22 16:52 by Register, 511 阅读, 0 评论, 收藏编辑

    使用正则表达式分隔Apache日志文件

    通用日志格式的Apache日志文件示例:

    127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

    组合日志格式的Apache日志文件示例:

    127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

    组合格式的日志文件比通用格式的日志文件多了两条请求头中包含的信息,其他部分完全一样,以组合格式的日志文件为例,日志中的每项代表的含义如下(详细信息参见Apache文档):

    1. 客户端的IP地址。
    2. 由客户端identd进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。
    3. HTTP认证系统得到的访问该网页的客户标识(userid),如果网页没有设置密码保护,则此项将是"-"。
    4. 服务器完成请求处理时的时间。
    5. 客户的动作\请求的资源\使用的协议。
    6. 服务器返回给客户端的状态码。
    7. 返回给客户端的不包括响应头的字节数.如果没有信息返回,则此项应该是"-"。
    8. "Referer"请求头。
    9. "User-Agent"请求头。

    用来提取信息的正则表达式组成:

    1. ^ :匹配每一行的开头。
    2. ([0-9.]+)\s :匹配IP地址。
    3. ([\w.-]+)\s :匹配identity,由数字字母下划线或点分隔符组成。
    4. ([\w.-]+)\s :匹配userid,由数字字母下划线或点分隔符组成。
    5. (\[[^\[\]]+\])\s :匹配时间。
    6. "((?:[^"]|\")+)"\s :匹配请求信息,双引号中可能出现转义的双引号\"。
    7. (\d{3})\s :匹配状态码。
    8. (\d+|-)\s :匹配响应字节数或-。
    9. "((?:[^"]|\")+)"\s :匹配"Referer"请求头,双引号中可能出现转义的双引号\"。
    10. "((?:[^"]|\")+)" :匹配"User-Agent"请求头,双引号中可能出现转义的双引号\"。
    11. $ :匹配行尾。

    最终的表达式如下:

    ^([0-9.]+)\s([\w.-]+)\s([\w.-]+)\s(\[[^\[\]]+\])\s"((?:[^"]|\")+)"\s(\d{3})\s(\d+|-)\s"((?:[^"]|\")+)"\s"((?:[^"]|\")+)"$

    C#示例:

     

    复制代码

    在C#中使用

    1 staticvoid Main(string[] args)
    2 {
    3 string pattern ="^([0-9.]+)\\s([\\w.-]+)\\s([\\w.-]+)\\s(\\[[^\\[\\]]+\\])\\s\"((?:[^\"]|\\\")+)\"\\s(\\d{3})\\s(\\d+|-)\\s\"((?:[^\"]|\\\")+)\"\\s\"((?:[^\"]|\\\")+)\"$";
    4 string input ="127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\"200 2326 \"http://www.example.com/start.html\" \"Mozilla/4.08 [en] (Win98; I ;Nav)\"";
    5   System.Text.RegularExpressions.GroupCollection groups =System.Text.RegularExpressions.Regex.Match(input, pattern).Groups;
    6 for (int i =0; i < groups.Count; i++)
    7 {
    8 Console.WriteLine(groups[i].Value);
    9 }
    10 }

    版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

    展开全文
  • 前言Windows服务器下部署Wamp环境作为PHP访问环境,在出现50人左右共同访问时,出现访问速度过慢问题,网上查阅资料发现是由于日志文件过大导致。查看日志文件发现已有30M以上,移除日志文件,发现速度回归正常。...

    前言

    Windows服务器下部署Wamp环境作为PHP访问环境,在出现50人左右共同访问时,出现访问速度过慢问题,网上查阅资料发现是由于日志文件过大导致。查看日志文件发现已有30M以上,移除日志文件,发现速度回归正常。查阅资料修改Apache配置,已使这种情况不在发生。

    解决步骤如下

    1. windows下删除apache_access.log和error.log文件,删除C:\wamp\logs目录下的apache_access.log和access.log文件

    2. 打开Apache的httpd.conf配置文件并找到下面两条配置

    ErrorLog "c:/wamp/logs/apache_error.log"  
    CustomLog "c:/wamp/logs/access.log" common  

    修改为

    #ErrorLog "c:/wamp/logs/apache_error.log"  
    
    #限制错误日志文件为 1M  
    ErrorLog "|bin/rotatelogs.exe -l c:/wamp/logs/apache_error-%Y-%m-%d.log 1M"  
    #每天生成一个错误日志文件  
    ErrorLog "|bin/rotatelogs.exe -l c:/wamp/logs/apache_error-%Y-%m-%d.log 86400"  
    #CustomLog "c:/wamp/logs/access.log" common 
    
    #限制WEB日志文件为 1M  
    CustomLog "|bin/rotatelogs.exe -l c:/wamp/logs/access-%Y-%m-%d.log 1M" common 
    #每天生成一个WEB日志文件   
    CustomLog "|bin/rotatelogs.exe -l c:/wamp/logs/access-%Y-%m-%d.log 86400" common

    检查了一下WEB日志,一般访问一次产生一条记录,觉得无用且频率高,我最后选择了关闭日志输出。

    3.修改错误级别

    #
    # LogLevel: Control the number of messages logged to the error_log.
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    #
    LogLevel warn

    其中,LogLevel用于调整记于错误日志中的信息的详细程度。(参阅ErrorLog指令)。可以选择下列级别,依照重要性降序排列:

    Level Description Example
    emerg   紧急 – 系统无法使用。“Child cannot open lock file. Exiting”
    alert   必须立即采取措施。“getpwuid: couldn’t determine user name from uid”
    crit    致命情况。“socket: Failed to get a socket, exiting child”
    error   错误情况。“remature end of script headers
    warn    警告情况。“child process 1234 did not exit, sending another SIGHUP”
    notice  一般重要情况。“httpd: caught SIGBUS, attempting to dump core in …”
    info    普通信息。“Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)…”
    debug 出错级别信息 “Opening config file …”

    默认级别是warn,那么warn级别以上的日志都会记录,会产生大量“文件不存在”的erro级别的错误日志。建议使用 crit 级别的设置,这样只记录致命级别以上的日志,有效减少日志数量。

    展开全文
  • php输出日志

    千次阅读 2018-04-16 18:18:13
    转自https://www.cnblogs.com/yszr/p/8489433.htmlerror_log('你要输出的信息', 3, 'E:\...php error_log记录日志的使用方法和配置对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,...
    转自https://www.cnblogs.com/yszr/p/8489433.html
    error_log('你要输出的信息', 3, 'E:\work\jiajiayue\Application\Api\Controller\1.txt');die;
    php error_log记录日志的使用方法和配置


    对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难 免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志的记录,可以帮助开发人员或者 管理人员查看系统是否存在问题。 如果需要将程序中的错误报告写入错误日志中,只要在PHP的配置文件中,将配置指令log_errors开启即可。错误 报告默认就会记录到Web服务器的日志文件里,例如记录到Apache服务器的错误日志文件error.log中。当然也可以记录错误日志到指定的文件中 或发送给系统syslog,分别介绍如下: 


    1、使用指定的文件记录错误报告日志


    使 用指定的文件记录错误报告日志使用指定的文件记录错误报告日志使用指定的文件记录错误报告日志 如果使用自己指定的文件记录错误日志,一定要确保将这个文 件存放在文档根目录之外,以减少遭到攻击的可能。并且该文件一定要让PHP脚本的执行用户(Web服务器进程所有者)具有写权限。假设在Linux操作系 统中,将/usr/local/目录下的error.log文件作为错误日志文件,并设置Web服务器进程用户具有写的权限。然后在PHP的配置文件中, 将error_log指令的值设置为这个错误日志文件的绝对路径。
    需要将php.ini中的配置指令做如下修改: 
    1. error_reporting  =  E_ALL                   ;将会向PHP报告发生的每个错误   
    2. display_errors = Off                        ;不显示满足上条 指令所定义规则的所有错误报告   
    3. log_errors = On                             ;决定日志语句记录的位置   
    4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   
    5. error_log = E:/php_log/php_error.log              ;指定产生的 错误报告写入的日志文件位置  
    PHP 的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记 录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,而且 还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。

    该函数的原型如下所示:

     1. bool error_log ( string message [, int message_type  [, string destination [, string extra_headers]]] )  



    此 函数会送出错误信息到Web服务器的错误日志文件、某个TCP服务器或到指定文件中。该函数执行成功则返回TRUE,失败则返回FALSE。第一个参数 message 是必选项,即为要送出的错误信息。如果仅使用这一个参数,会按配置文件php.ini中所设置的位置处发送消息。第二个参数 message_type为整数值:0表示送到操作系统的日志中;1则使用PHP的Mail()函数,发送信息到某E-mail处,第四个参数 extra_headers亦会用到;2则将错误信息送到TCP 服务器中,此时第三个参数destination表示目的地IP及Port;3则将信息 存到文件destination中。


    如果以登入Oracle数据库出现问题的处理为例,该函数的使用如下所示: 


    1. <?php      


    2.     if(!Ora_Logon($username, $password)){     


     3.         error_log("Oracle数据库不可用!", 0);        //将错误消息写入到操作系统日志中   


    4.     }   


    5.     if(!($foo=allocate_new_foo()){   


    6.         error_log("出现大麻烦了!", 1, ". mydomain.com");   //发送到管理员邮箱中   


    7.     }  


    8.     error_log("搞砸了!",   2,   "localhost:5000");     //发送到本机对应5000端口的服务器中   


    9.     error_log("搞砸了!",   3,   "/usr/local/errors.log");  //发送到指定的文件中   


    10. ?>  


     


    2、 错误信息记录到操作系统的日志里


    错 误信息记录到操作系统的日志里错误信息记录到操作系统的日志里错误信息记录到操作系统的日志里 错误报告也可以被记录到操作系统日志里,但不同的操作系统 之间的日志管理有点区别。在Linux上错误语句将送往syslog,而在Windows上错误将发送到事件日志里。如果你不熟悉syslog,起码要知 道它是基于UNIX的日志工具,它提供了一个API来记录与系统和应用程序执行有关的消息。Windows事件日志实际上与UNIX的syslog相同, 这些日志通常可以通过事件查看器来查看。如果希望将错误报告写到操作系统的日志里,可以在配置文件中将error_log指令的值设置为syslog。


    具体需要在php.ini中修改的配置指令如下所示: 


    1. error_reporting  =  E_ALL                   ;将会向PHP报告发生的每个错误   


    2. display_errors = Off                            ;不显示 满足上条指令所定义规则的所有错误报告   


    3. log_errors = On                             ;决定日志语句记录的位置   


    4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   


    5. error_log = syslog                          ;指定产生的错误报告写入操作系统的日志里  


     


    除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。


    分别介绍如下: 


    define_syslog_variables() 


    在使用openlog()、syslog及closelog()三个函数之前必须先调用该函数。因为在调用该函数时,它会根据现在的系统环境为下面三个函数初使用化一些必需的常量。 


    openlog() 


    打开一个和当前系统中日志器的连接,为向系统插入日志消息做好准备。并将提供的第一个字符串参数插入到每个日志消息中,该函数还需要指定两个将在日志上下文使用的参数,可以参考官方文档使用。 


     syslog()


    该 函数向系统日志中发送一个定制消息。需要两个必选参数,第一个参数通过指定一个常量定制消息的优先级。例如LOG_WARNING表示一般的警 告,LOG_EMERG表示严重地可以预示着系统崩溃的问题,一些其他的表示严重程度的常量可以参考官方文档使用。第二个参数则是向系统日志中发送的定制 消息,需要提供一个消息字符串,也可以是PHP引擎在运行时提供的错误字符串。 


    closelog()


    该函数在向系统日志中发送完成定制消息以后调用,关闭由openlog()函数打开的日志连接。 


     


    如果在配置文件中,已经开启向syslog发送定制消息的指令,就可以使用前面介绍的四个函数发送一个警告消息到系统日志中,并通过系统中的syslog解析工具,查看和分析由PHP程序发送的定制消息,如下所示: 


    1.  


    2.     define_syslog_variables();   


    3.     openlog("PHP5", LOG_PID , LOG_USER);   


    4.     syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s"));  


    5.     closelog();   


    6. ?> 


     以Windows系统为例,通过右击"我的电脑"选择管理选项,然后到系统工具菜单中,选择事件查看器,再找到应用程序选项,就可以看到我们自己定制的警告消息了。上面这段代码将在系统的syslog文件中,生成类似下面的一条信息,是事件的一部分: 


          1. PHP5[3084], 警告报告向syslog中发送的演示, 警告时间:2009/03/26 04:09:11.  


    使 用指定的文件还是使用syslog记录错误日志,取决于你所在的Web服务器环境。如果你可以控制Web服务器,使用syslog是最理想的,因为你能利 用syslog的解析工具来查看和分析日志。但如果你的网站在共享服务器的虚拟主机中运行,就只有使用单独的文本文件记录错误日志了。
    展开全文
  • FROM:...访问日志存储目录由CustomLog指定。下面我们来分析日志并得出有用的统计。我的Apache日志存储目录 /var/log/apache2access.log 文件几本结构示例1234138.128.75.90 - - [15/Nov/2015:1...
  • Apache日志查看、定制、分析

    千次阅读 2017-11-26 15:17:30
    本文分五个部分:访问日志、错误日志、定制日志日志分析、其他用法。   Apche日志系列(1):访问日志    网站的访问记录及运行情况,查看Apache的访问日志就可以知道。访问日志Apache的标准日志,以下首先...
  • Apache日志详解

    千次阅读 2014-07-09 10:31:46
    本文分五个部分:访问日志、错误日志、定制日志日志分析、其他用法。摘自永远的Linux,做了一些修整。   Apche日志系列(1):访问日志    想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的...
  • Apache配置错误日志

    千次阅读 2015-07-13 10:12:43
    可以通过查看apache配置文件:httpd.conf文件 来看日志错误文件存储位置: 效果如: 错误日志配置指令 :ErrorLog  ErrorLog 指令指定了当服务器遇到错误时记录错误日志的文件名。其格式为:  格式1:Error...
  • Apache配置访问日志

    2015-07-13 10:21:38
    可以在httpd.conf配置文件中查看位置: 配置访问日志 CustomLog  CustomLog 指令用来对服务器的请求进行日志记录。格式为:  格式1:CustomLog 访问日志文件名 记录格式说明串|格式昵称  格式2:CustomLog ...
  • apache日志分类二. apache的日志格式详解1. 输出最近的一段访问日志2. 日志的字段所代表的内容如下:3. apache访问日志配置文件参数详解三. 配置修改实战总结 前言 遇到问题我们一般需要看日志,服务日志和系统日志...
  • Apache 日志分类及作用

    千次阅读 2013-10-11 10:12:10
    http://blog.chinaunix.net/uid-21202343-id-1829690.html 日志的种类 Apache 的标准中规定了4类日志: ... 错误日志 ... 访问日志 ... 传输日志 ... Cookie日志 ...其中:传输日志和Cookie日志Apache 2.0认为已
  • php 写内容到文件,把日志写到log文件

    千次阅读 2016-05-27 21:29:16
    php 写内容到文件,把日志写到log文件 1 <?php 2 header("Content-type: text/html; charset=utf-8"); 3 /******************** 4 1、写入内容到文件,追加内容到文件 5 2、打开并读取文
  • Apache日志的格式

    2015-02-06 09:42:09
    本文分五个部分:访问日志、错误日志、定制日志日志分析、其他用法。摘自永远的Linux,做了一些修整。   Apche日志系列(1):访问日志    想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的...
  • Apache日志有很多可以自己定义的项目,其中一个 %T 能够显示出服务器处理请求所用的时间。我就是对这个的定义发生了疑问,所以做了一些考证。 在Apache2的中文手册中,是这样定义 %T 这个变量的。 %T 处理完请求...
  • 统计apache日志文件里访问量前十的ip并按从多到少排列 五月 31, 2012 by FandLR Filed under Linux Leave a comment 解法1: cat acce
  • apache日志说明

    千次阅读 2014-12-16 15:57:34
    本文分五个部分:访问日志、错误日志、定制日志日志分析、其他用法。摘自永远的Linux,做了一些修整。   Apche日志系列(1):访问日志    想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的...
  • 关于Apache日志

    2015-08-14 15:54:52
    Apche日志系列(1):访问日志    想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的访问日志就可以知道。访问日志Apache的标准日志,本文详细解释了访问日志的内容以及相关选项的配置。    一...
  • apache开启日志记录,access.log

    万次阅读 2013-11-28 19:28:21
    apache开启日志记录,access.log 发现logs文件夹里面只有error.log 没有access.log 修改httpd.conf # CustomLog "logs/access.log" common 去掉前面这个#号
  • 系统日志分类别输出日志文件[Log4j应用]  在项目的开发过程中,系统对日志的要求很细,而且要求分类清楚。所以还是采用了Log4J。 <br /> 在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用...
  • 一种是通过外部程序对获取apache日志输出管道对日志进行处理分割.目前常用的方式 cronolog.exe或rotatelogs.exe来完成,不知道采用此方案的朋友有没有发现这种方式存在严重的问题。 1.当apache以非服务的方式...
1 2 3 4 5 ... 20
收藏数 27,354
精华内容 10,941
关键字:

php 输出apache日志文件