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.