⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logs.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="Apache, 中文, 手册, 中文版, 中文手册, 中文版手册, 参考手册, 中文参考手册, 金步国" />
<meta name="description" content="Apache 2.2 中文版参考手册" />
<meta name="author" content="金步国" />
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>日志文件 - Apache 2.2 中文版参考手册</title>
</head>
<body id="manual-page">
<div id="page-header"><p class="menu"><a href="./mod/index.html">模块索引</a> | <a href="./mod/directives.html">指令索引</a> | <a href="./faq/index.html">常见问题</a> | <a href="./glossary.html">词汇表</a> | <a href="./sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path"><a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">文档</a> &gt; <a href="./index.html">版本2.2</a></div>

<div id="translation-info">   <a href="./translator_announcement.html#thanks">致谢</a> | <a href="./translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:&#099;sfr&#0097;nk&#0064;&#099;itiz&#046;n&#0101;t">金步国</a> | 本篇译稿最后更新:2006年1月4日 | <a href="./translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>日志文件</h1>


    <p>要有效地管理Web服务器,就有必要反馈服务器的活动、性能以及出现的问题。Apache HTTP服务器提供了非常全面而灵活的日志记录功能。本文将阐述如何配置文件以及如何理解日志内容。</p>
  </div>
	<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">安全警告</a></h2>
    

    <p>任何人只要对Apache存放日志文件的目录具有写权限,也就当然地可以获得启动Apache的用户(通常是root)的权限,<em>绝对不要</em>随意给予任何人存放日志文件目录的写权限。细节请参见<a href="misc/security_tips.html">安全方面的提示</a>。</p>

    <p>另外,日志文件可能会包含未加转换的来自用户的信息,用户就有机会恶意插入控制符,所以处理原始日志时应该当心这个问题。</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="errorlog" id="errorlog">错误日志(Error Log)</a></h2>
    

    <table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="related">
<tr><th>相关模块</th><th>相关指令</th></tr>
<tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code></li><li><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code></li></ul></td></tr>
</table>

    <p>错误日志是最重要的日志文件,其文件名和位置取决于<code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code>指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。</p>

    <p>错误日志通常被写入一个文件(unix系统上一般是<code>error_log</code> ,Windows和OS/2上一般是<code>error.log</code>)。在unix系统中,错误日志还可能被重定向到<code>syslog</code>或<a href="#piped">通过管道操作传递给一个程序</a>。</p>

    <p>错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是:</p>

    <div class="example"><p><code>
      [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
      client denied by server configuration:
      /export/home/live/ap/htdocs/test
    </code></p></div>

    <p>其中,第一项是错误发生的日期和时间;第二项是错误的严重性,<code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code>指令使只有高于指定严重性级别的错误才会被记录;第三项是导致错误的IP地址;此后是信息本身,在此例中,服务器拒绝了这个客户的访问。服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。</p>

    <p>错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到<code>stderr</code>的信息会作为调试信息原封不动地记录到错误日志中。</p>

    <p>用户可以增加或删除错误日志的项。但是对某些特殊请求,在<a href="#accesslog">访问日志(access log)</a>中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是403,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。</p>

    <p>在测试中,对任何问题持续监视错误日志是非常有用的。在unix系统中,可以这样做:</p>

    <div class="example"><p><code>
      tail -f error_log
    </code></p></div>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="accesslog" id="accesslog">访问日志(Access Log)</a></h2>
    

    <table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="related">
<tr><th>相关模块</th><th>相关指令</th></tr>
<tr><td><ul><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li></ul></td></tr>
</table>

    <p>访问日志中会记录服务器所处理的所有请求,其文件名和位置取决于<code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>指令,<code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>指令可以简化日志的内容。这里阐述如何配置服务器的访问日志。</p>

    <p>实施日志管理,首先当然必须产生访问日志,然后才能分析日志从而得到有用的统计信息。日志分析不是Web服务器的职责,已超出本文的范畴,更多资料和有关分析工具的信息,可以查看<a href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/">Open Directory</a>或<a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a> 。</p>

    <p>不同版本的Apache httpd使用了不同的模块和指令来控制对访问的记录,包括mod_log_referer, mod_log_agent和<code>TransferLog</code>指令。现在,<code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>指令包含了旧版本中相关指令的所有功能。</p>

    <p>访问日志的格式是高度灵活的,使用很象C风格的printf()函数的格式字符串。下面有几个例子,完整的说明可以查看用于<code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code>模块的<a href="mod/mod_log_config.html#formats">格式字符串</a>。</p>

    <h3><a name="common" id="common">通用日志格式(Common Log Format)</a></h3>
      

      <p>这是一个典型的记录格式:</p>

      <div class="example"><p><code>
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
         CustomLog logs/access_log common
      </code></p></div>

      <p>它定义了一种特定的记录格式字符串,并给它起了个<em>别名</em>叫<code>common</code> ,其中的"%"指示服务器用某种信息替换,其他字符则不作替换。引号(<code>"</code>)必须加反斜杠转义,以避免被解释为字符串的结束。格式字符串还可以包含特殊的控制符,如换行符"<code>\n</code>" 、制表符"<code>\t</code>"。</p>

      <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>指令建立一个使用指定<em>别名</em>的新日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于<code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code>的相对路径。</p>

      <p>上述配置是一种被称为通用日志格式(CLF)的记录格式,它被许多不同的Web服务器所采用,并被许多日志分析程序所识别,它产生的记录形如:</p>

      <div class="example"><p><code>
        127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
        /apache_pb.gif HTTP/1.0" 200 2326
      </code></p></div>

      <p>记录的各部分说明如下:</p>

      <dl>
        <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>

        <dd>这是发送请求到服务器的客户的IP地址。如果<code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code>设为 <code>On</code> ,则服务器会尝试解析这个IP地址的主机名并替换此处的IP地址,但并不推荐这样做,因为它会显著拖慢服务器,最好是用一个日志后续处理器来判断主机名,比如<code class="program"><a href="./programs/logresolve.html">logresolve</a></code> 。如果客户和服务器之间存在代理,那么记录中的这个IP地址就是那个代理的IP地址,而不是客户机的真实IP地址。</dd>

        <dt><code>-</code> (<code>%l</code>)</dt>

        <dd>这是由客户端<code>identd</code>进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。除非在严格控制的内部网络中,此信息通常很不可靠,不应该被使用。只有在将<code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code>指令设为 <code>On</code> 时,Apache才会试图得到这项信息。</dd>

        <dt><code>frank</code> (<code>%u</code>)</dt>

        <dd>这是HTTP认证系统得到的访问该网页的客户标识(userid),环境变量<code>REMOTE_USER</code>会被设为该值并提供给CGI脚本。如果状态码是401,表示客户未通过认证,则此值没有意义。如果网页没有设置密码保护,则此项将是"<code>-</code>"。</dd>

        <dt><code>[10/Oct/2000:13:55:36 -0700]</code> (<code>%t</code>)</dt>

        <dd>这是服务器完成请求处理时的时间,其格式是:
          <p class="indent">
            <code>[日/月/年:时:分:秒 时区]<br />
             日 = 2数字<br />
             月 = 3字母<br />
             年 = 4数字<br />
             时 = 2数字<br />
             分 = 2数字<br />
             秒 = 2数字<br />
             时区 = (+|-)4数字</code>
          </p>可以在格式字符串中使用 <code>%{format}t</code> 来改变时间的输出形式,其中的<code>format</code>与C标准库中的<code>strftime()</code>用法相同。
        </dd>

        <dt><code>"GET /apache_pb.gif HTTP/1.0"</code> (<code>\"%r\"</code>)</dt>

        <dd>引号中是客户端发出的包含许多有用信息的请求行。可以看出,该客户的动作是<code>GET</code> ,请求的资源是<code>/apache_pb.gif</code> ,使用的协议是<code>HTTP/1.0</code> 。另外,还可以记录其他信息,如:格式字符串"<code>%m %U%q %H</code>"会记录动作、路径、查询字符串、协议,其输出和"<code>%r</code>"一样。</dd>

        <dt><code>200</code> (<code>%&gt;s</code>)</dt>

        <dd>这是服务器返回给客户端的状态码。这个信息非常有价值,因为它指示了请求的结果,或者是被成功响应了(以2开头),或者被重定向了(以3开头),或者出错了(以4开头),或者产生了服务器端错误(以5开头)。完整的状态码列表参见<a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">HTTP规范</a>(RFC2616第10章)。</dd>

        <dt><code>2326</code> (<code>%b</code>)</dt>

        <dd>最后这项是返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是"<code>-</code>",如果希望记录为"<code>0</code>"的形式,就应该用<code>%B</code> 。</dd>
      </dl>
    

    <h3><a name="combined" id="combined">组合日志格式(Combined Log Format)</a></h3>
      

      <p>另一种常用的记录格式是组合日志格式,形式如下:</p>

      <div class="example"><p><code>
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
        \"%{User-agent}i\"" combined<br />
         CustomLog log/access_log combined
      </code></p></div>

      <p>这种格式与通用日志格式类似,但是多了两个 <code>%{<em>header</em>}i</code> 项,其中的<em>header</em>可以是任何请求头。这种格式的记录形如:</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -