Blame modules/md/md_log.c

Packit 90a5c9
/* Licensed to the Apache Software Foundation (ASF) under one or more
Packit 90a5c9
 * contributor license agreements.  See the NOTICE file distributed with
Packit 90a5c9
 * this work for additional information regarding copyright ownership.
Packit 90a5c9
 * The ASF licenses this file to You under the Apache License, Version 2.0
Packit 90a5c9
 * (the "License"); you may not use this file except in compliance with
Packit 90a5c9
 * the License.  You may obtain a copy of the License at
Packit 90a5c9
 *
Packit 90a5c9
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 90a5c9
 *
Packit 90a5c9
 * Unless required by applicable law or agreed to in writing, software
Packit 90a5c9
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 90a5c9
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 90a5c9
 * See the License for the specific language governing permissions and
Packit 90a5c9
 * limitations under the License.
Packit 90a5c9
 */
Packit 90a5c9
 
Packit 90a5c9
#include <apr_lib.h>
Packit 90a5c9
#include <apr_strings.h>
Packit 90a5c9
#include <apr_buckets.h>
Packit 90a5c9
Packit 90a5c9
#include "md_log.h"
Packit 90a5c9
Packit 90a5c9
#define LOG_BUFFER_LEN  1024
Packit 90a5c9
Packit 90a5c9
static const char *level_names[] = {
Packit 90a5c9
    "emergency",
Packit 90a5c9
    "alert",
Packit 90a5c9
    "crit",
Packit 90a5c9
    "err",
Packit 90a5c9
    "warning",
Packit 90a5c9
    "notice",
Packit 90a5c9
    "info",
Packit 90a5c9
    "debug",
Packit 90a5c9
    "trace1",
Packit 90a5c9
    "trace2",
Packit 90a5c9
    "trace3",
Packit 90a5c9
    "trace4",
Packit 90a5c9
    "trace5",
Packit 90a5c9
    "trace6",
Packit 90a5c9
    "trace7",
Packit 90a5c9
    "trace8",
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
const char *md_log_level_name(md_log_level_t level)
Packit 90a5c9
{
Packit 90a5c9
    return level_names[level];
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
static md_log_print_cb *log_printv;
Packit 90a5c9
static md_log_level_cb *log_level;
Packit 90a5c9
static void *log_baton;
Packit 90a5c9
Packit 90a5c9
void md_log_set(md_log_level_cb *level_cb, md_log_print_cb *print_cb, void *baton)
Packit 90a5c9
{
Packit 90a5c9
    log_printv = print_cb;
Packit 90a5c9
    log_level = level_cb;
Packit 90a5c9
    log_baton = baton;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
int md_log_is_level(apr_pool_t *p, md_log_level_t level)
Packit 90a5c9
{
Packit 90a5c9
    if (!log_level) {
Packit 90a5c9
        return 0;
Packit 90a5c9
    }
Packit 90a5c9
    return log_level(log_baton, p, level);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void md_log_perror(const char *file, int line, md_log_level_t level, 
Packit 90a5c9
                   apr_status_t rv, apr_pool_t *p, const char *fmt, ...)
Packit 90a5c9
{
Packit 90a5c9
    va_list ap;
Packit 90a5c9
Packit 90a5c9
    va_start(ap, fmt);
Packit 90a5c9
    if (log_printv) {
Packit 90a5c9
        log_printv(file, line, level, rv, log_baton, p, fmt, ap);
Packit 90a5c9
    }
Packit 90a5c9
    va_end(ap);
Packit 90a5c9
}