src/log.c
branchnew-lib-errors
changeset 216 a10ba529ae39
parent 209 d240da5dbeb5
equal deleted inserted replaced
215:85863b89e38b 216:a10ba529ae39
    70     // replace the current one
    70     // replace the current one
    71     _log_output_ctx.func = func ? func : log_default_func;
    71     _log_output_ctx.func = func ? func : log_default_func;
    72     _log_output_ctx.arg = arg;
    72     _log_output_ctx.arg = arg;
    73 }
    73 }
    74 
    74 
    75 void log_output_tag (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, ...)
    75 void log_output_tag_va (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, va_list log_fmtargs)
    76 {
    76 {
    77     char buf[LOG_MSG_MAX], *buf_ptr = buf;
    77     char buf[LOG_MSG_MAX], *buf_ptr = buf;
    78     size_t buf_size = sizeof(buf);
    78     size_t buf_size = sizeof(buf);
    79 
    79 
    80     // filter out?
    80     // filter out?
    87     // output the user data
    87     // output the user data
    88     if (user_fmt)
    88     if (user_fmt)
    89         buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, user_fmt, user_fmtargs));
    89         buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, user_fmt, user_fmtargs));
    90     
    90     
    91     // output the suffix
    91     // output the suffix
    92     if (log_fmt) {
    92     if (log_fmt)
    93         va_list vargs;
    93         buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, log_fmt, log_fmtargs));
    94 
       
    95         va_start(vargs, log_fmt);
       
    96         buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, log_fmt, vargs));
       
    97         va_end(vargs);
       
    98     }
       
    99 
    94 
   100     // send it to the output func
    95     // send it to the output func
   101     _log_output_ctx.func(buf, _log_output_ctx.arg);
    96     _log_output_ctx.func(buf, _log_output_ctx.arg);
       
    97 
       
    98 }
       
    99 
       
   100 void log_output_tag (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, ...)
       
   101 {
       
   102     va_list vargs;
       
   103 
       
   104     va_start(vargs, log_fmt);
       
   105     log_output_tag_va(level, tag, func, user_fmt, user_fmtargs, log_fmt, vargs);
       
   106     va_end(vargs);
   102 }
   107 }
   103 
   108 
   104 void _log_msg (enum log_level level, const char *func, const char *format, ...)
   109 void _log_msg (enum log_level level, const char *func, const char *format, ...)
   105 {
   110 {
   106     va_list vargs;
   111     va_list vargs;
   107     
   112     
   108     // formatted output: no suffix
   113     // formatted output: no suffix
   109     va_start(vargs, format);
   114     va_start(vargs, format);
   110     log_output_tag(level, log_level_name(level), func, format, vargs, NULL);
   115     log_output_tag(level, log_level_name(level), func, format, vargs, NULL);
   111     va_end(vargs);
   116     va_end(vargs);
       
   117 }
       
   118 
       
   119 void _log_msg_va2 (enum log_level level, const char *func, const char *fmt1, va_list fmtargs1, const char *fmt2, va_list fmtargs2)
       
   120 {
       
   121     log_output_tag_va(level, log_level_name(level), func, fmt1, fmtargs1, fmt2, fmtargs2);
   112 }
   122 }
   113 
   123 
   114 void _log_err (enum log_level level, err_t err, const char *func, const char *format, ...)
   124 void _log_err (enum log_level level, err_t err, const char *func, const char *format, ...)
   115 {
   125 {
   116     va_list vargs;
   126     va_list vargs;