EXTAPI void gps_log(int type , int priority , const char *tag , const char *fmt , ...) { va_list ap; va_start(ap, fmt); switch (type) { case GPS_LOG_PRINT_FILE: gps_debug_file_fd = open(GPS_SERVER_MSG_LOG_FILE, O_WRONLY|O_CREAT|O_APPEND, 0644); if (gps_debug_file_fd != -1) { vsnprintf(gps_debug_file_buf,255, fmt , ap ); write(gps_debug_file_fd, gps_debug_file_buf, strlen(gps_debug_file_buf)); close(gps_debug_file_fd); } break; case GPS_LOG_SYSLOG: int syslog_prio; switch (priority) { case GPS_LOG_ERR: syslog_prio = LOG_ERR|LOG_DAEMON; break; case GPS_LOG_DBG: syslog_prio = LOG_DEBUG|LOG_DAEMON; break; case GPS_LOG_INFO: syslog_prio = LOG_INFO|LOG_DAEMON; break; default: syslog_prio = priority; break; } vsyslog(syslog_prio, fmt, ap); break; case GPS_LOG_DLOG: if (tag) { switch (priority) { case GPS_LOG_ERR: SLOG_VA(LOG_ERROR, tag ? tag : "NULL" , fmt ? fmt : "NULL" , ap); break; case GPS_LOG_DBG: SLOG_VA(LOG_DEBUG, tag ? tag : "NULL", fmt ? fmt : "NULL" , ap); break; case GPS_LOG_INFO: SLOG_VA(LOG_INFO, tag ? tag : "NULL" , fmt ? fmt : "NULL" , ap); break; } } break; } va_end(ap); }
static void logger(void *data, mrp_log_level_t level, const char *file, int line, const char *func, const char *format, va_list ap) { va_list cp; MRP_UNUSED(data); MRP_UNUSED(file); MRP_UNUSED(line); MRP_UNUSED(func); va_copy(cp, ap); switch (level) { case MRP_LOG_ERROR: SLOG_VA(LOG_ERROR, log_tag, format, cp); break; case MRP_LOG_WARNING: SLOG_VA(LOG_WARN, log_tag, format, cp); break; case MRP_LOG_INFO: SLOG_VA(LOG_INFO, log_tag, format, cp); break; case MRP_LOG_DEBUG: SLOG_VA(LOG_DEBUG, log_tag, format, cp); break; default: break; } va_end(cp); }