<td>The current time in compact ISO 8601 format, including
micro-seconds</td></tr>
+ <tr><td><code>%...v</code></td>
+ <td>The canonical <directive module="core">ServerName</directive>
+ of the current server.</td></tr>
+
+ <tr><td><code>%...V</code></td>
+ <td>The server name of the server serving the request according to the
+ <directive module="core" >UseCanonicalName</directive>
+ setting.</td></tr>
+
<tr><td><code>\ </code> (backslash space)</td>
<td>Non-field delimiting space</td></tr>
return len;
}
+static int log_server_name(const ap_errorlog_info *info, const char *arg,
+ char *buf, int buflen)
+{
+ if (info->r)
+ return cpystrn(buf, ap_get_server_name((request_rec *)info->r), buflen);
+
+ return 0;
+}
+
+static int log_virtual_host(const ap_errorlog_info *info, const char *arg,
+ char *buf, int buflen)
+{
+ if (info->s)
+ return cpystrn(buf, info->s->server_hostname, buflen);
+
+ return 0;
+}
+
+
static int log_table_entry(const apr_table_t *table, const char *name,
char *buf, int buflen)
{
ap_register_errorlog_handler(p, "P", log_pid, 0);
ap_register_errorlog_handler(p, "t", log_ctime, 0);
ap_register_errorlog_handler(p, "T", log_tid, 0);
+ ap_register_errorlog_handler(p, "v", log_virtual_host, 0);
+ ap_register_errorlog_handler(p, "V", log_server_name, 0);
}
/*