+#endif /* AP_DEBUG */
+
+
+/**
+ * Generic accessor for modules to get the module-specific loglevel
+ * @param s The server from which to get the loglevel.
+ * @param index The module_index of the module to get the loglevel for.
+ * @return The module-specific loglevel
+ */
+AP_DECLARE(int) ap_get_server_module_loglevel(const server_rec *s, int index);
+
+/**
+ * Generic accessor for modules the module-specific loglevel
+ * @param c The connection from which to get the loglevel.
+ * @param index The module_index of the module to get the loglevel for.
+ * @return The module-specific loglevel
+ */
+AP_DECLARE(int) ap_get_conn_module_loglevel(const conn_rec *c, int index);
+
+/**
+ * Generic accessor for modules the module-specific loglevel
+ * @param c The connection from which to get the loglevel.
+ * @param s The server from which to get the loglevel if c does not have a
+ * specific loglevel configuration.
+ * @param index The module_index of the module to get the loglevel for.
+ * @return The module-specific loglevel
+ */
+AP_DECLARE(int) ap_get_conn_server_module_loglevel(const conn_rec *c,
+ const server_rec *s,
+ int index);
+
+/**
+ * Generic accessor for modules to get the module-specific loglevel
+ * @param r The request from which to get the loglevel.
+ * @param index The module_index of the module to get the loglevel for.
+ * @return The module-specific loglevel
+ */
+AP_DECLARE(int) ap_get_request_module_loglevel(const request_rec *r, int index);
+
+/**
+ * Accessor to set module-specific loglevel
+ * @param p A pool
+ * @param l The ap_logconf struct to modify.
+ * @param index The module_index of the module to set the loglevel for.
+ * @param level The new log level
+ */
+AP_DECLARE(void) ap_set_module_loglevel(apr_pool_t *p, struct ap_logconf *l,
+ int index, int level);
+
+#if !defined(AP_DEBUG)
+
+#define ap_get_conn_logconf(c) \
+ ((c)->log ? (c)->log : \
+ &(c)->base_server->log)
+
+#define ap_get_conn_server_logconf(c,s) \
+ ( ( (c)->log != &(c)->base_server->log && (c)->log != NULL ) ? \
+ (c)->log : \
+ &(s)->log )
+
+#define ap_get_request_logconf(r) \
+ ((r)->log ? (r)->log : \
+ (r)->connection->log ? (r)->connection->log : \
+ &(r)->server->log)
+
+#define ap_get_module_loglevel(l,i) \
+ (((i) < 0 || (l)->module_levels == NULL || (l)->module_levels[i] < 0) ? \
+ (l)->level : \
+ (l)->module_levels[i])
+
+#define ap_get_server_module_loglevel(s,i) \
+ (ap_get_module_loglevel(&(s)->log,i))
+
+#define ap_get_conn_module_loglevel(c,i) \
+ (ap_get_module_loglevel(ap_get_conn_logconf(c),i))
+
+#define ap_get_conn_server_module_loglevel(c,s,i) \
+ (ap_get_module_loglevel(ap_get_conn_server_logconf(c,s),i))
+
+#define ap_get_request_module_loglevel(r,i) \
+ (ap_get_module_loglevel(ap_get_request_logconf(r),i))
+
+#endif /* AP_DEBUG */
+
+/**
+ * Set all module-specific loglevels to val
+ * @param l The log config for which to set the loglevels.
+ * @param val the value to set all loglevels to
+ */
+AP_DECLARE(void) ap_reset_module_loglevels(struct ap_logconf *l, int val);
+