From d1405d7d5a3cd3b3b8582128ab763f19ef274d64 Mon Sep 17 00:00:00 2001 From: Kiryl Kaveryn Date: Mon, 5 Aug 2024 13:52:19 +0400 Subject: [PATCH] [ios] write the Error and Critical messages to the log file synchronously Signed-off-by: Kiryl Kaveryn --- iphone/CoreApi/CoreApi/Logger/Logger.mm | 26 ++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/iphone/CoreApi/CoreApi/Logger/Logger.mm b/iphone/CoreApi/CoreApi/Logger/Logger.mm index 4cd24c279d..203b874a91 100644 --- a/iphone/CoreApi/CoreApi/Logger/Logger.mm +++ b/iphone/CoreApi/CoreApi/Logger/Logger.mm @@ -16,6 +16,7 @@ + (void)enableFileLogging; + (void)disableFileLogging; + (void)logMessageWithLevel:(base::LogLevel)level src:(base::SrcPoint const &)src message:(std::string const &)message; ++ (void)tryWriteToFile:(std::string const &)logString; + (NSURL *)getZippedLogFile:(NSString *)logFilePath; + (void)removeFileAtPath:(NSString *)filePath; + (base::LogLevel)baseLevel:(LogLevel)level; @@ -203,21 +204,24 @@ bool AssertMessage(base::SrcPoint const & src, std::string const & message) // TODO: (KK) Either guard this call, or refactor thread ids in logHelper. logHelper.WriteProlog(output, level); logHelper.WriteLog(output, src, message); - + auto const logString = output.str(); - Logger * logger = [self logger]; // Log the message into the system log. - os_log(logger.osLogger, "%{public}s", logString.c_str()); + os_log([self logger].osLogger, "%{public}s", logString.c_str()); - dispatch_async([self fileLoggingQueue], ^{ - // Write the log message into the file. - NSFileHandle * fileHandle = logger.fileHandle; - if (fileHandle != nil) { - [fileHandle seekToEndOfFile]; - [fileHandle writeData:[NSData dataWithBytes:logString.c_str() length:logString.length()]]; - } - }); + if (level < base::GetDefaultLogAbortLevel()) + dispatch_async([self fileLoggingQueue], ^{ [self tryWriteToFile:logString]; }); + else + [self tryWriteToFile:logString]; +} + ++ (void)tryWriteToFile:(std::string const &)logString { + NSFileHandle * fileHandle = [self logger].fileHandle; + if (fileHandle != nil) { + [fileHandle seekToEndOfFile]; + [fileHandle writeData:[NSData dataWithBytes:logString.c_str() length:logString.length()]]; + } } + (NSURL *)getZippedLogFile:(NSString *)logFilePath {