Skip to content

Commit e22e954

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

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

sources/logger.cpp

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,19 @@
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();
12-
13-
auto consoleLogger = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
14-
consoleLogger->set_level(logLevelConsole);
15-
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 {
20-
auto fileLogger = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(logFile, fileSize, filesCount);
21-
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);
10+
if (!_logger) {
11+
spdlog::drop_all();
12+
_consoleLogger = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
13+
_fileLogger = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(logFile, fileSize, filesCount);
14+
std::initializer_list<spdlog::sink_ptr> loggers{_consoleLogger, _fileLogger};
15+
_logger = std::make_shared<spdlog::logger>("auto_sdr", loggers);
16+
spdlog::register_logger(_logger);
2517
}
2618

19+
_consoleLogger->set_level(logLevelConsole);
20+
_fileLogger->set_level(logLevelFile);
2721
_logger->set_level(std::min(logLevelConsole, logLevelFile));
2822
_logger->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%-7l] %v");
29-
spdlog::register_logger(_logger);
3023
spdlog::flush_every(std::chrono::seconds(10));
3124
_isColorLogEnabled = isColorLogEnabled;
3225
}

sources/logger.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class Logger {
6464
Logger() = delete;
6565
~Logger() = delete;
6666

67+
inline static std::shared_ptr<spdlog::sinks::sink> _consoleLogger = nullptr;
68+
inline static std::shared_ptr<spdlog::sinks::sink> _fileLogger = nullptr;
6769
inline static std::shared_ptr<spdlog::logger> _logger = nullptr;
6870
inline static bool _isColorLogEnabled = true;
6971
};

0 commit comments

Comments
 (0)