Skip to content

Commit 73556ed

Browse files
committed
Fixed crash in logger.
1 parent ad5e61e commit 73556ed

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

sources/logger.cpp

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,24 @@
77

88
void Logger::Logger::configure(
99
const spdlog::level::level_enum logLevelConsole, const spdlog::level::level_enum logLevelFile, const std::string& logFile, int fileSize, int filesCount, bool isColorLogEnabled) {
10-
spdlog::drop_all();
11-
_logger.reset();
10+
std::shared_ptr<spdlog::logger> logger = std::make_shared<spdlog::logger>("auto_sdr");
1211

13-
auto consoleLogger = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
14-
consoleLogger->set_level(logLevelConsole);
12+
if (logLevelConsole != spdlog::level::off) {
13+
auto consoleLogger = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
14+
consoleLogger->set_level(logLevelConsole);
15+
logger->sinks().push_back(consoleLogger);
16+
}
1517

16-
if (logLevelFile == spdlog::level::off || logFile.empty()) {
17-
std::initializer_list<spdlog::sink_ptr> loggers{consoleLogger};
18-
Logger::_logger = std::make_shared<spdlog::logger>("auto_sdr", loggers);
19-
} else {
18+
if (logLevelFile != spdlog::level::off && !logFile.empty() && 0 < fileSize && 0 < filesCount) {
2019
auto fileLogger = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(logFile, fileSize, filesCount);
2120
fileLogger->set_level(logLevelFile);
22-
23-
std::initializer_list<spdlog::sink_ptr> loggers{consoleLogger, fileLogger};
24-
Logger::_logger = std::make_shared<spdlog::logger>("auto_sdr", loggers);
21+
logger->sinks().push_back(fileLogger);
2522
}
2623

27-
_logger->set_level(std::min(logLevelConsole, logLevelFile));
28-
_logger->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%-7l] %v");
29-
spdlog::register_logger(_logger);
30-
spdlog::flush_every(std::chrono::seconds(10));
31-
_isColorLogEnabled = isColorLogEnabled;
24+
isColorLogEnabled = isColorLogEnabled;
25+
logger->set_level(std::min(logLevelConsole, logLevelFile));
26+
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%-7l] %v");
27+
spdlog::flush_every(std::chrono::seconds(30));
28+
spdlog::flush_on(spdlog::level::warn);
29+
spdlog::set_default_logger(logger);
3230
}

sources/logger.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,47 +24,45 @@ class Logger {
2424
template <typename... Args>
2525
static void trace(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
2626
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
27-
Logger::_logger->trace("[{:12}] {}", label, msg);
27+
spdlog::trace("[{:12}] {}", label, msg);
2828
}
2929

3030
template <typename... Args>
3131
static void debug(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
3232
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
33-
Logger::_logger->debug("[{:12}] {}", label, msg);
33+
spdlog::debug("[{:12}] {}", label, msg);
3434
}
3535

3636
template <typename... Args>
3737
static void info(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
3838
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
39-
Logger::_logger->info("[{:12}] {}", label, msg);
39+
spdlog::info("[{:12}] {}", label, msg);
4040
}
4141

4242
template <typename... Args>
4343
static void warn(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
4444
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
45-
Logger::_logger->warn("[{:12}] {}", label, msg);
45+
spdlog::warn("[{:12}] {}", label, msg);
4646
}
4747

4848
template <typename... Args>
4949
static void error(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
5050
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
51-
Logger::_logger->error("[{:12}] {}", label, msg);
51+
spdlog::error("[{:12}] {}", label, msg);
5252
}
5353

5454
template <typename... Args>
5555
static void critical(const char* label, fmt::format_string<Args...> fmt, Args&&... args) {
5656
auto msg = fmt::format(fmt, std::forward<Args>(args)...);
57-
Logger::_logger->critical("[{:12}] {}", label, msg);
57+
spdlog::critical("[{:12}] {}", label, msg);
5858
}
5959

60-
static void flush() { Logger::_logger->flush(); }
6160
static bool isColorLogEnabled() { return _isColorLogEnabled; }
6261

6362
private:
6463
Logger() = delete;
6564
~Logger() = delete;
6665

67-
inline static std::shared_ptr<spdlog::logger> _logger = nullptr;
6866
inline static bool _isColorLogEnabled = true;
6967
};
7068

sources/radio/blocks/sdr_source.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ int SdrSource::work(int noutput_items, gr_vector_const_void_star&, gr_vector_voi
3636
return result;
3737
} else {
3838
Logger::error(LABEL, "soapy error: {}", SoapySDR::errToStr(result));
39-
Logger::flush();
4039
exit(1);
4140
return 0;
4241
}

0 commit comments

Comments
 (0)