Exemplo n.º 1
0
static void stdiostream_vmessage(xentoollog_logger *logger_in,
                                 xentoollog_level level,
                                 int errnoval,
                                 const char *context,
                                 const char *format,
                                 va_list al) {
    xentoollog_logger_stdiostream *lg = (void*)logger_in;

    if (level < lg->min_level)
        return;

    progress_erase(lg);

    if (lg->flags & XTL_STDIOSTREAM_SHOW_DATE) {
        struct tm lt_buf;
        time_t now = time(0);
        struct tm *lt= localtime_r(&now, &lt_buf);
        if (lt != NULL)
            fprintf(lg->f, "%04d-%02d-%02d %02d:%02d:%02d %s ",
                    lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday,
                    lt->tm_hour, lt->tm_min, lt->tm_sec,
                    tzname[!!lt->tm_isdst]);
        else
            fprintf(lg->f, "[localtime_r failed: %d] ", errno);
    }
    if (lg->flags & XTL_STDIOSTREAM_SHOW_PID)
        fprintf(lg->f, "[%lu] ", (unsigned long)getpid());

    if (context)
        fprintf(lg->f, "%s: ", context);

    fprintf(lg->f, "%s: ", xtl_level_to_string(level));

    vfprintf(lg->f, format, al);

    if (errnoval >= 0)
        fprintf(lg->f, ": %s", strerror(errnoval));

    putc('\n', lg->f);
    fflush(lg->f);
}
Exemplo n.º 2
0
static void hyperxl_vmessage(xentoollog_logger *logger_in,
                                 xentoollog_level level,
                                 int errnoval,
                                 const char *context,
                                 const char *format,
                                 va_list al) {
    xentoollog_logger_hyperxl *lg = (void*)logger_in;

    if (level < lg->min_level)
        return;

    progress_erase(lg);

    if (lg->log_pos < HYPERXL_LOG_BUF_SIZE)
        lg->log_pos += snprintf(hyperxl_log_buf + lg->log_pos, HYPERXL_LOG_BUF_SIZE - lg->log_pos, "%s: ", xtl_level_to_string(level));

    if (lg->log_pos < HYPERXL_LOG_BUF_SIZE)
        lg->log_pos += vsnprintf(hyperxl_log_buf + lg->log_pos, HYPERXL_LOG_BUF_SIZE - lg->log_pos, format, al);

    if (errnoval >= 0 && lg->log_pos < HYPERXL_LOG_BUF_SIZE)
        lg->log_pos += snprintf(hyperxl_log_buf + lg->log_pos, HYPERXL_LOG_BUF_SIZE - lg->log_pos, ": %s", strerror(errnoval));

    hyperxl_log(lg);
}