core(logger): strip path prefix
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Tue, 6 Dec 2022 23:32:10 +0000 (23:32 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Wed, 7 Dec 2022 23:58:36 +0000 (23:58 +0000)
modules/core/src/logger.cpp

index f395571e80ce4e6d7cb53bdc4329e375d18068d3..7e3f8aa29d82a6e3b6b4c1fe45aee3aadf6fa45c 100644 (file)
@@ -233,24 +233,42 @@ void writeLogMessage(LogLevel logLevel, const char* message)
         (*out) << std::flush;
 }
 
+static const char* stripSourceFilePathPrefix(const char* file)
+{
+    CV_Assert(file);
+    const char* pos = file;
+    const char* strip_pos = NULL;
+    char ch = 0;
+    while ((ch = pos[0]) != 0)
+    {
+        ++pos;
+        if (ch == '/' || ch == '\\')
+            strip_pos = pos;
+    }
+    if (strip_pos == NULL || strip_pos == pos/*eos*/)
+        return file;
+    return strip_pos;
+}
+
 void writeLogMessageEx(LogLevel logLevel, const char* tag, const char* file, int line, const char* func, const char* message)
 {
     std::ostringstream strm;
     if (tag)
     {
-        strm << tag << " ";
+        strm << tag << ' ';
     }
     if (file)
     {
-        strm << file << " ";
-    }
-    if (line > 0)
-    {
-        strm << "(" << line << ") ";
+        strm << stripSourceFilePathPrefix(file);
+        if (line > 0)
+        {
+            strm << ':' << line;
+        }
+        strm << ' ';
     }
     if (func)
     {
-        strm << func << " ";
+        strm << func << ' ';
     }
     strm << message;
     writeLogMessage(logLevel, strm.str().c_str());