void usbmuxd_log(enum loglevel level, const char *fmt, ...) { va_list ap; char *fs; struct timeval ts; struct tm *tp; if(level > log_level) return; gettimeofday(&ts, NULL); tp = localtime(&ts.tv_sec); fs = malloc(20 + strlen(fmt)); if(log_syslog) { sprintf(fs, "[%d] %s\n", level, fmt); } else { strftime(fs, 10, "[%H:%M:%S", tp); sprintf(fs+9, ".%03d][%d] %s\n", (int)(ts.tv_usec / 1000), level, fmt); } va_start(ap, fmt); if (log_syslog) { vsyslog(level_to_syslog_level(level), fs, ap); } else { vfprintf(stderr, fs, ap); } va_end(ap); free(fs); }
template<class msg_type, class tag_type> void write_tag(msg_type & str, const tag_type & tag) const { ::syslog( level_to_syslog_level(tag.val) , as_string(str).c_str() ); }