void xtl_stdiostream_adjust_flags(xentoollog_logger_stdiostream *lg, unsigned set_flags, unsigned clear_flags) { unsigned new_flags = (lg->flags & ~clear_flags) | set_flags; if (new_flags & XTL_STDIOSTREAM_HIDE_PROGRESS) progress_erase(lg); lg->flags = new_flags; }
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, <_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); }
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); }
static void hyperxl_destroy(struct xentoollog_logger *logger_in) { xentoollog_logger_hyperxl *lg = (void*)logger_in; progress_erase(lg); free(lg); }
static void stdiostream_destroy(struct xentoollog_logger *logger_in) { xentoollog_logger_stdiostream *lg = (void*)logger_in; progress_erase(lg); free(lg); }