apache 日志

一 apache的日志分类

      apache的日志可分为三种:                        运行时错误日志,访问日志,其他相关插件或模块的运行日志

      1.1  apache运行时错误日志:

             该日志由指令 ErrorLog   控制, 一般记录apache在启动过程或者运行时的错误

      1.2  apache访问日志:  

             该日志由指令 CustomLog 控制, 一般用于记录该服务器的被访问记录

      1.3 其他模块或插件的运行日志:

            常见的一些服务器扩展功能的插件如集成tomcat于apache中的mod_jk模块的日志

 

二. apache中与日志相关的一些应用:

 2.1 自定义格式的日志

     2.1.1用LogFormat 指令自定义一个名为combined的日志格式

  LogFormat "%h %l %u %t /"%r/" %>s %b /"%{Referer}i/" /"%{User-Agent}i/"" combined

      LogLevel warn     (指令负责告诉apache只记录级别为warm的运行状况信息)

      CustomLog logs/access.log combined

    

2.2  为在同一apache服务器上的多个项目配置各自的出错日志和访问日志

  1. <VirtualHost 10.0.0.2> 
  2. DocumentRoot "/home/sites/domain1/html/" 
  3. ServerName domain1.com 
  4. ErrorLog /home/sites/domain1/logs/error.log 
  5. CustomLog /home/sites/domain1/logs/web.log 
  6. </VirtualHost> 
  7. <VirtualHost 10.0.0.3> 
  8. DocumentRoot "/home/sites/domain2/html/" 
  9. ServerName domain2.com 
  10. ErrorLog /home/sites/domain2/logs/error.log 
  11. CustomLog /home/sites/domain2/logs/web.log 
  12. </VirtualHost> 
  13. <VirtualHost 10.0.0.4> 
  14. DocumentRoot "/home/sites/domain3/html/" 
  15. ServerName domain3.com 
  16. ErrorLog /home/sites/domain3/logs/error.log 
  17. CustomLog /home/sites/domain3/logs/web.log 
  18. </VirtualHost>

2.3  如何合并实现负载均衡后的多个log文件

 

三关于apache日志的高级应用:

3.1把日志记录写入到指定程序

  日志记录并非只能写入到文件,它还可以写入到指定的进程。当我们想要把日志信息写入数据库、或者是某些能够实时显示网站流量统计信息的程序时,这一点是非常有用的。
     使用TransferLog或者CustomLog指令,我们能够指定“|”,后面再加上接收日志信息的程序名字。例如:

                CustomLog |/usr/bin/apachelog.pl common
     其中/usr/bin/apachelog.pl是一个程序,这个程序知道如何处理Apache日志文件的记录。事实上,这个程序非常简单,比如它可以是一个按照某种方式处理日志记录的Perl程序,或者是一个将日志记录写入数据库的程序。
     在采用这种记录日志数据的方法时,安全问题是最必须关注的问题。日志文件是以启动服务器的用户所具有的权限打开的,通常是root。
     
如果你要把日志记录写入到某个程序,建议先找找是否有现成的具备自己想要功能的模块。请访问http://modules.apache.org/,该网站收集了许多面向Apache完成各类实际任务的模块。

3.2 轮换日志
      日志文件会越来越大,如果不小心把日志文件放到了/var之类位置,日志文件可能写满分区,从而导致服务器被迫停止运行。这种事情确实曾经发生过。
      如果要自己实现这方面的功能,我们可以使用称为Logfile::Rotate的Perl模块(可从CPAN下载)。下面的代码就具有这种功能,它由cron按照一定的间隔周期(比如一星期)运行,为了节省空间。每一个备份的日志文件都经过压缩。

 

3.3  選擇性紀錄日誌          http://httpd.apache.org/docs/2.0/logs.html

       我們可以利用environment variables實現選擇性紀錄日誌.  首先用SetEnvIf設置一個environment variables, 然後在  CustomLog 指令中利用env= clause 來實現選擇性紀錄日誌.

  1. # Mark requests from the loop-back interface
  2. SetEnvIf Remote_Addr "127/.0/.0/.1" dontlog
  3. # Mark requests for the robots.txt file
  4. SetEnvIf Request_URI "^/robots/.txt$" dontlog
  5. # Log what remains
  6. CustomLog logs/access_log common env=!dontlog 
我們可以把英文用戶和中文用戶的訪問紀錄寫進不同的日誌文件
  1. SetEnvIf Accept-Language "en" english
  2. CustomLog logs/english_log common env=english
  3. CustomLog logs/non_english_log common env=!english

 

 

《Apache日志》系列文章:

http://www.chinalinuxpub.com/read.php?wid=636

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值