| <?xml version="1.0"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> | |
| <!-- $LastChangedRevision$ --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <modulesynopsis metafile="mod_log_debug.xml.meta"> | |
| <name>mod_log_debug</name> | |
| <description>Additional configurable debug logging</description> | |
| <status>Experimental</status> | |
| <sourcefile>mod_log_debug.c</sourcefile> | |
| <identifier>log_debug_module</identifier> | |
| <compatibility>Available in Apache 2.3.14 and later</compatibility> | |
| <section id="examples"><title>Examples</title> | |
| <ol> | |
| <li> | |
| Log message after request to /foo/* is processed: | |
| <highlight language="config"> | |
| <Location "/foo/"> | |
| LogMessage "/foo/ has been requested" | |
| </Location> | |
| </highlight> | |
| </li> | |
| <li> | |
| Log message if request to /foo/* is processed in a sub-request: | |
| <highlight language="config"> | |
| <Location "/foo/"> | |
| LogMessage "subrequest to /foo/" hook=type_checker "expr=-T %{IS_SUBREQ}" | |
| </Location> | |
| </highlight> | |
| The default log_transaction hook is not executed for sub-requests, | |
| therefore we have to use a different hook. | |
| </li> | |
| <li> | |
| Log message if an IPv6 client causes a request timeout: | |
| <highlight language="config"> | |
| LogMessage "IPv6 timeout from %{REMOTE_ADDR}" "expr=-T %{IPV6} && %{REQUEST_STATUS} = 408" | |
| </highlight> | |
| Note the placing of the double quotes for the <code>expr=</code> argument. | |
| </li> | |
| <li> | |
| Log the value of the "X-Foo" request environment variable in each | |
| stage of the request: | |
| <highlight language="config"> | |
| <Location "/"> | |
| LogMessage "%{reqenv:X-Foo}" hook=all | |
| </Location> | |
| </highlight> | |
| Together with microsecond time stamps in the error log, | |
| <code>hook=all</code> also lets you determine the times spent | |
| in the different parts of the request processing. | |
| </li> | |
| </ol> | |
| </section> | |
| <directivesynopsis> | |
| <name>LogMessage</name> | |
| <description>Log user-defined message to error log | |
| </description> | |
| <syntax>LogMessage <var>message</var> | |
| [hook=<var>hook</var>] [expr=<var>expression</var>] | |
| </syntax> | |
| <default>Unset</default> | |
| <contextlist><context>directory</context> | |
| </contextlist> | |
| <usage> | |
| <p>This directive causes a user defined message to be logged to the | |
| error log. The message can use variables and functions from the | |
| <a href="../expr.html">ap_expr syntax</a>. References to HTTP headers | |
| will not cause header names to be added to the Vary header. The | |
| messages are logged at loglevel info.</p> | |
| <p>The hook specifies before which phase of request processing the message | |
| will be logged. The following hooks are supported:</p> | |
| <table border="1" style="zebra"> | |
| <columnspec><column width="1"/></columnspec> | |
| <tr><th>Name</th></tr> | |
| <tr><td><code>pre_translate_name</code></td></tr> | |
| <tr><td><code>translate_name</code></td></tr> | |
| <tr><td><code>type_checker</code></td></tr> | |
| <tr><td><code>quick_handler</code></td></tr> | |
| <tr><td><code>map_to_storage</code></td></tr> | |
| <tr><td><code>check_access</code></td></tr> | |
| <tr><td><code>check_access_ex</code></td></tr> | |
| <tr><td><code>insert_filter</code></td></tr> | |
| <tr><td><code>check_authn</code></td></tr> | |
| <tr><td><code>check_authz</code></td></tr> | |
| <tr><td><code>fixups</code></td></tr> | |
| <tr><td><code>handler</code></td></tr> | |
| <tr><td><code>log_transaction</code></td></tr> | |
| </table> | |
| <p>The default is <code>log_transaction</code>. The special value | |
| <code>all</code> is also supported, causing a message to be logged at each | |
| phase. Not all hooks are executed for every request.</p> | |
| <p>The optional expression allows to restrict the message if a | |
| condition is met. The details of the expression syntax are described in | |
| the <a href="../expr.html">ap_expr documentation</a>. References to HTTP | |
| headers will not cause the header names to be added to the Vary header.</p> | |
| </usage> | |
| </directivesynopsis> | |
| </modulesynopsis> |