diff --git a/lib/log/log.c b/lib/log/log.c index 93a037b95..c5682c51e 100644 --- a/lib/log/log.c +++ b/lib/log/log.c @@ -108,12 +108,29 @@ spdk_log_unwind_stack(FILE *fp, enum spdk_log_level level) #define spdk_log_unwind_stack(fp, lvl) #endif +static void +get_timestamp_prefix(char *buf, int buf_size) +{ + struct tm *info; + char date[24]; + struct timespec ts; + long usec; + + clock_gettime(CLOCK_REALTIME, &ts); + info = localtime(&ts.tv_sec); + usec = ts.tv_nsec / 1000; + + strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", info); + snprintf(buf, buf_size, "[%s.%06ld] ", date, usec); +} + void spdk_log(enum spdk_log_level level, const char *file, const int line, const char *func, const char *format, ...) { int severity = LOG_INFO; char buf[MAX_TMPBUF]; + char timestamp[32]; va_list ap; if (g_log) { @@ -150,11 +167,12 @@ spdk_log(enum spdk_log_level level, const char *file, const int line, const char vsnprintf(buf, sizeof(buf), format, ap); if (level <= g_spdk_log_print_level) { + get_timestamp_prefix(timestamp, sizeof(timestamp)); if (file) { - fprintf(stderr, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); + fprintf(stderr, "%s%s:%4d:%s: *%s*: %s", timestamp, file, line, func, spdk_level_names[level], buf); spdk_log_unwind_stack(stderr, level); } else { - fprintf(stderr, "%s", buf); + fprintf(stderr, "%s%s", timestamp, buf); } } diff --git a/test/blobfs/rocksdb/rocksdb.sh b/test/blobfs/rocksdb/rocksdb.sh index 8a9cedddf..d620a7917 100755 --- a/test/blobfs/rocksdb/rocksdb.sh +++ b/test/blobfs/rocksdb/rocksdb.sh @@ -30,7 +30,7 @@ run_step() { db_bench=$1_db_bench.txt echo -n Start $1 test phase... time taskset 0xFF $DB_BENCH --flagfile="$1"_flags.txt &> "$db_bench" - DB_BENCH_FILE=$(grep /dev/shm "$db_bench" | cut -f 6 -d ' ') + DB_BENCH_FILE=$(grep -o '/dev/shm/\(\w\|\.\|\d\|/\)*' "$db_bench") gzip $DB_BENCH_FILE mv $DB_BENCH_FILE.gz "$1"_trace.gz chmod 644 "$1"_trace.gz