mod_log_debug
Additional configurable debug logging
Experimental
mod_log_debug.c
log_debug_module
Available in Apache 2.3.14 and later

# Examples

1. Log message after request to /foo/* is processed:

   <Location /foo/>
   LogMessage "/foo/ has been requested"
   </Location>
2. Log message if request to /foo/* is processed in a sub-request: <Location /foo/>
   LogMessage "subrequest to /foo/" hook=type_checker expr=%{IS_SUBREQ}
   </Location>

   The default log_transaction hook is not executed for sub-requests, therefore we have to use a different hook.
3. Log message if an IPv6 client causes a request timeout: LogMessage "IPv6 timeout from %{REMOTE_ADDR}" "expr=-T %{IPV6} && %{REQUEST_STATUS} = 408" Note the placing of the double quotes for the `expr=` argument.
4. Log the value of the "X-Foo" request environment variable in each stage of the request: <Location />
   LogMessage "%{reqenv:X-Foo}" hook=all
   </Location>
   Together with microsecond time stamps in the error log, `hook=all` also allows to determine the times spent in the different parts of the request processing.

LogMessage
Log userdefined message to error log
LogMessage message [hook=hook] [expr=expression]
Unset
directory

This directive causes a user defined message to be logged to the error log. The message can use variables and functions from the ap_expr syntax. The messages are logged at loglevel info.

The hook specifies before which phase of request procesing the message will be logged. The following hooks are supported:

Name
`translate_name`
`type_checker`
`quick_handler`
`map_to_storage`
`check_access`
`check_access_ex`
`insert_filter`
`check_authn`
`check_authz`
`fixups`
`handler`
`log_transaction`

The default is `log_transaction`. The special value `all` is also supported, causing a message to be logged at each phase. Not all hooks are executed for every request.

The optional expression allows to restrict the message if a condition is met. The details of the expression syntax are described in the ap_expr documentation.