diff --git a/logger/include/logger.hpp b/logger/include/logger.hpp index 37f0662..10c4d27 100644 --- a/logger/include/logger.hpp +++ b/logger/include/logger.hpp @@ -65,6 +65,11 @@ public: * При ошибке открытия файла или записи возвращается Status * с описанием ошибки. * + * @warning Класс Logger не является потокобезопасным. + * Одновременный вызов данного метода из нескольких потоков + * для одного и того же экземпляра Logger или одного файла журнала + * может привести к неопределённому порядку записей. + * * @param level Уровень логирования сообщения. * @param message Текст сообщения. * @@ -81,6 +86,11 @@ public: * writeMessage(getLogLevel(), message); * @endcode * + * @warning Класс Logger не является потокобезопасным. + * Одновременный вызов данного метода из нескольких потоков + * для одного и того же экземпляра Logger или одного файла журнала + * может привести к неопределённому порядку записей. + * * @param message Текст сообщения. * * @return Статус выполнения операции. diff --git a/tests/logger/logger_test.cpp b/tests/logger/logger_test.cpp index 1a66393..3a0bc6d 100644 --- a/tests/logger/logger_test.cpp +++ b/tests/logger/logger_test.cpp @@ -85,6 +85,8 @@ void testMultipleWrites() { Logger logger(file.getFileName(), LogLevel::info()); + // NOTE: Ресурс файла был автоматически освобождён после первого вызова, + // поэтому следующий вызов может повторно открыть файл для записи auto first = logger.writeMessage(LogLevel::info(), "first message"); auto second = logger.writeMessage(LogLevel::error(), "second message");