void grn_logger_putv(grn_ctx *ctx, grn_log_level level, const char *file, int line, const char *func, const char *fmt, va_list ap) { if (level <= current_logger.max_level && current_logger.log) { char tbuf[TBUFSIZE]; char mbuf[MBUFSIZE]; char lbuf[LBUFSIZE]; tbuf[0] = '\0'; if (current_logger.flags & GRN_LOG_TIME) { grn_timeval tv; grn_timeval_now(ctx, &tv); grn_timeval2str(ctx, &tv, tbuf, TBUFSIZE); } if (current_logger.flags & GRN_LOG_MESSAGE) { grn_vsnprintf(mbuf, MBUFSIZE, fmt, ap); } else { mbuf[0] = '\0'; } if (current_logger.flags & GRN_LOG_LOCATION) { grn_snprintf(lbuf, LBUFSIZE, LBUFSIZE, "%d %s:%d %s()", getpid(), file, line, func); } else { lbuf[0] = '\0'; } current_logger.log(ctx, level, tbuf, "", mbuf, lbuf, current_logger.user_data); } }
void grn_query_logger_put(grn_ctx *ctx, unsigned int flag, const char *mark, const char *format, ...) { char timestamp[TIMESTAMP_BUFFER_SIZE]; char info[INFO_BUFFER_SIZE]; grn_obj *message = &ctx->impl->query_log_buf; if (!current_query_logger.log) { return; } { grn_timeval tv; timestamp[0] = '\0'; grn_timeval_now(ctx, &tv); grn_timeval2str(ctx, &tv, timestamp, TIMESTAMP_BUFFER_SIZE); } if (flag & (GRN_QUERY_LOG_COMMAND | GRN_QUERY_LOG_DESTINATION)) { grn_snprintf(info, INFO_BUFFER_SIZE, INFO_BUFFER_SIZE, "%p|%s", ctx, mark); info[INFO_BUFFER_SIZE - 1] = '\0'; } else { grn_timeval tv; uint64_t elapsed_time; grn_timeval_now(ctx, &tv); elapsed_time = (uint64_t)(tv.tv_sec - ctx->impl->tv.tv_sec) * GRN_TIME_NSEC_PER_SEC + (tv.tv_nsec - ctx->impl->tv.tv_nsec); grn_snprintf(info, INFO_BUFFER_SIZE, INFO_BUFFER_SIZE, "%p|%s%015" GRN_FMT_INT64U " ", ctx, mark, elapsed_time); info[INFO_BUFFER_SIZE - 1] = '\0'; } { va_list args; va_start(args, format); GRN_BULK_REWIND(message); grn_text_vprintf(ctx, message, format, args); va_end(args); GRN_TEXT_PUTC(ctx, message, '\0'); } current_query_logger.log(ctx, flag, timestamp, info, GRN_TEXT_VALUE(message), current_query_logger.user_data); }
static void lprint(grn_ctx *ctx, const char *fmt, ...) { char buf[1024]; grn_timeval tv; int len; va_list argp; grn_timeval_now(ctx, &tv); grn_timeval2str(ctx, &tv, buf); len = strlen(buf); buf[len++] = '|'; va_start(argp, fmt); vsnprintf(buf + len, 1023 - len, fmt, argp); va_end(argp); buf[1023] = '\0'; puts(buf); }