Beispiel #1
0
static int
cmd_debug_run (urj_chain_t *chain, char *params[])
{
    switch (urj_cmd_params (params)) {

    /* display current log level */
    case 1:
        urj_log (URJ_LOG_LEVEL_NORMAL, _("Current log level is '%s'\n"),
                 urj_log_level_string (urj_log_state.level));
        return URJ_STATUS_OK;

    /* set log level */
    case 2:
    {
        urj_log_level_t new_level = urj_string_log_level (params[1]);
        if (new_level == -1)
        {
            urj_error_set (URJ_ERROR_SYNTAX, "unknown log level '%s'", params[1]);
            return URJ_STATUS_FAIL;
        }
        urj_log_state.level = new_level;

        return URJ_STATUS_OK;
    }

    /* fail! */
    default:
        urj_error_set (URJ_ERROR_SYNTAX,
                       "%s: #parameters should be %d, not %d",
                       params[0], 2, urj_cmd_params (params));
        return URJ_STATUS_FAIL;
    }
}
Beispiel #2
0
int
urj_do_log (urj_log_level_t level, const char *file, size_t line,
            const char *func, const char *fmt, ...)
{
    int (*p) (const char *fmt, va_list ap);
    va_list ap;
    int r = 0;

    if (level < urj_log_state.level)
        return 0;

    if (level < URJ_LOG_LEVEL_WARNING)
        p = urj_log_state.out_vprintf;
    else
        p = urj_log_state.err_vprintf;

    if (level == URJ_LOG_LEVEL_WARNING || level == URJ_LOG_LEVEL_ERROR
        || level <= URJ_LOG_LEVEL_DETAIL)
        r += log_printf (p, "%s: ", urj_log_level_string (level));

    if (urj_log_state.level <= URJ_LOG_LEVEL_DEBUG)
        r += log_printf (p, "%s:%i %s(): ", file, line, func);

    va_start (ap, fmt);
    r += (*p) (fmt, ap);
    va_end (ap);

    return r;
}