From eae1585e38e702829059a84722aa34a78307fcd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 12 Aug 2016 09:04:05 +0200 Subject: [PATCH] logger: store full file name in logger, remove it from log writer - also add log file to the status output --- src/modules/logger/log_writer.cpp | 9 ++++----- src/modules/logger/log_writer.h | 1 - src/modules/logger/logger.cpp | 11 +++++++---- src/modules/logger/logger.h | 1 + 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/modules/logger/log_writer.cpp b/src/modules/logger/log_writer.cpp index c645b6dbeb..9a8d7aa3c3 100644 --- a/src/modules/logger/log_writer.cpp +++ b/src/modules/logger/log_writer.cpp @@ -82,16 +82,15 @@ LogWriter::~LogWriter() void LogWriter::start_log(const char *filename) { - ::strncpy(_filename, filename, sizeof(_filename)); - _fd = ::open(_filename, O_CREAT | O_WRONLY, PX4_O_MODE_666); + _fd = ::open(filename, O_CREAT | O_WRONLY, PX4_O_MODE_666); if (_fd < 0) { - PX4_ERR("Can't open log file %s", _filename); + PX4_ERR("Can't open log file %s", filename); _should_run = false; return; } else { - PX4_INFO("Opened log file: %s", _filename); + PX4_INFO("Opened log file: %s", filename); _should_run = true; _running = true; } @@ -232,7 +231,7 @@ void LogWriter::run() PX4_WARN("error closing log file"); } else { - PX4_INFO("closed logfile: %s, bytes written: %zu", _filename, _total_written); + PX4_INFO("closed logfile, bytes written: %zu", _total_written); } } diff --git a/src/modules/logger/log_writer.h b/src/modules/logger/log_writer.h index 1d230f5602..07ebbee387 100644 --- a/src/modules/logger/log_writer.h +++ b/src/modules/logger/log_writer.h @@ -122,7 +122,6 @@ private: /* 512 didn't seem to work properly, 4096 should match the FAT cluster size */ static constexpr size_t _min_write_chunk = 4096; - char _filename[64]; int _fd = -1; uint8_t *_buffer = nullptr; const size_t _buffer_size; diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 0331ebf2ba..0883457bee 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -234,6 +234,7 @@ void Logger::print_statistics() float mebibytes = kibibytes / 1024.0f; float seconds = ((float)(hrt_absolute_time() - _start_time)) / 1000000.0f; + PX4_INFO("Log file: %s/%s", _log_dir, _log_file_name); PX4_INFO("Wrote %4.2f MiB (avg %5.2f KiB/s)", (double)mebibytes, (double)(kibibytes / seconds)); PX4_INFO("Since last status: dropouts: %zu (max len: %.3f s), max used buffer: %zu / %zu B", _write_dropouts, (double)_max_dropout_duration, _high_water, _writer.get_buffer_size()); @@ -942,9 +943,10 @@ int Logger::get_log_file_name(char *file_name, size_t file_name_size) return -1; } - char log_file_name[64] = ""; - strftime(log_file_name, sizeof(log_file_name), "%H_%M_%S", &tt); - snprintf(file_name, file_name_size, "%s/%s%s.ulg", _log_dir, log_file_name, replay_suffix); + char log_file_name_time[16] = ""; + strftime(log_file_name_time, sizeof(log_file_name_time), "%H_%M_%S", &tt); + snprintf(_log_file_name, sizeof(_log_file_name), "%s%s.ulg", log_file_name_time, replay_suffix); + snprintf(file_name, file_name_size, "%s/%s", _log_dir, _log_file_name); } else { if (create_log_dir(nullptr)) { @@ -956,7 +958,8 @@ int Logger::get_log_file_name(char *file_name, size_t file_name_size) /* look for the next file that does not exist */ while (file_number <= MAX_NO_LOGFILE) { /* format log file path: e.g. /fs/microsd/sess001/log001.ulg */ - snprintf(file_name, file_name_size, "%s/log%03u%s.ulg", _log_dir, file_number, replay_suffix); + snprintf(_log_file_name, sizeof(_log_file_name), "log%03u%s.ulg", file_number, replay_suffix); + snprintf(file_name, file_name_size, "%s/%s", _log_dir, _log_file_name); if (!file_exist(file_name)) { break; diff --git a/src/modules/logger/logger.h b/src/modules/logger/logger.h index 44ad42ebbf..a6fbd2ab8c 100644 --- a/src/modules/logger/logger.h +++ b/src/modules/logger/logger.h @@ -217,6 +217,7 @@ private: int _msg_buffer_len = 0; bool _task_should_exit = true; char _log_dir[LOG_DIR_LEN]; + char _log_file_name[32]; bool _has_log_dir = false; bool _enabled = false; bool _was_armed = false;