src/log.c
author Tero Marttila <terom@fixme.fi>
Wed, 01 Apr 2009 00:38:16 +0300
changeset 104 fc196bb4bcc2
parent 73 2780a73c71f3
child 118 05b8d5150313
permissions -rw-r--r--
implement lua_log and lua_log_level
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include "log.h"
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include <stdio.h>
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
#include <stdarg.h>
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     7
/**
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     8
 * The global log level
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     9
 */
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    10
static enum log_level _log_level = LOG_LEVEL_DEFAULT;
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    11
104
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    12
/**
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    13
 * List of log level names
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    14
 */
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    15
const char *log_level_names[] = {
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    16
    "DEBUG",
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    17
    "INFO",
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    18
    "WARN",
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    19
    "ERROR",
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    20
    "FATAL",
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    21
    NULL
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    22
};
fc196bb4bcc2 implement lua_log and lua_log_level
Tero Marttila <terom@fixme.fi>
parents: 73
diff changeset
    23
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
#define _LOG_LEVEL_NAME(ll) case LOG_ ## ll: return #ll;
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
const char *log_level_name (enum log_level level)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
{
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    switch (level) {
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
        _LOG_LEVEL_NAME(DEBUG)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        _LOG_LEVEL_NAME(INFO)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
        _LOG_LEVEL_NAME(WARN)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        _LOG_LEVEL_NAME(ERROR)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        _LOG_LEVEL_NAME(FATAL)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        default: return "???";
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    }
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
}
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    37
/**
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
 * Output the "[TYPE] FUNC: " header
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
 */
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
void _log_header (enum log_level level, const char *func)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
{
22
c339c020fd33 add missing irc_cmd.h, and modify line_proto/irc_conn to use log
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    42
    printf("[%5s] %20s : ", log_level_name(level), func);
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
}
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
void log_msg (enum log_level level, const char *func, const char *format, ...)
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
{
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
    va_list vargs;
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    48
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    49
    // filter out?
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    50
    if (level < _log_level)
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    51
        return;
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
    
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
    _log_header(level, func);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
    
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
    // formatted output
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    va_start(vargs, format);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
    vprintf(format, vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    va_end(vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    // newline
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
    printf("\n");
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
}
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    64
void set_log_level (enum log_level level)
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    65
{
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    66
    // meep meep
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    67
    _log_level = level;
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    68
}
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    69
22
c339c020fd33 add missing irc_cmd.h, and modify line_proto/irc_conn to use log
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    70
void _log_err (enum log_level level, err_t err, const char *func, const char *format, ...)
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
{
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
    va_list vargs;
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    74
    // filter out?
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    75
    if (level < _log_level)
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    76
        return;
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    77
 
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
    // header
22
c339c020fd33 add missing irc_cmd.h, and modify line_proto/irc_conn to use log
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    79
    _log_header(level, func);
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
    
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
    // formatted output
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
    va_start(vargs, format);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
    vprintf(format, vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
    va_end(vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    // err_code and newline
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
    printf(": %s\n", error_name(err));
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
}
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
22
c339c020fd33 add missing irc_cmd.h, and modify line_proto/irc_conn to use log
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    90
void _log_err_info (enum log_level level, struct error_info *err, const char *func, const char *format, ...)
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
{
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
    va_list vargs;
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
73
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    94
    // filter out?
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    95
    if (level < _log_level)
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    96
        return;
2780a73c71f3 add set_log_level function, and add --debug/--quiet options to test
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    97
 
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
    // header
22
c339c020fd33 add missing irc_cmd.h, and modify line_proto/irc_conn to use log
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    99
    _log_header(level, func);
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
    
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
    // formatted output
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
    va_start(vargs, format);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    vprintf(format, vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
    va_end(vargs);
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
    // err_code and newline
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
    printf(": %s\n", error_msg(err));
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
}