Title: [283469] trunk
Revision
283469
Author
[email protected]
Date
2021-10-03 10:19:59 -0700 (Sun, 03 Oct 2021)

Log Message

Enable release log to stderr
https://bugs.webkit.org/show_bug.cgi?id=230725
<rdar://problem/83740529>

Reviewed by Michael Catanzaro.

.:

Introduced new flags, USE_LOG_STDERR for release logging to stderr.

* Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

SQLiteDatabase uses hard-coded %{public} format specifiers. Replace them with defined
macro.

No new tests because there is no behavior change.

* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::close):
(WebCore::SQLiteDatabase::prepareStatementSlow):
(WebCore::SQLiteDatabase::prepareStatement):
(WebCore::SQLiteDatabase::prepareHeapStatementSlow):
(WebCore::SQLiteDatabase::prepareHeapStatement):

Source/WTF:

Define new compiler definitions, USE_LOG_STDERR for release logging. We don't have
modern logging backend so that dumping out to stdout/stderr is still very valuable.

* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Logger.h:
(WTF::Logger::log):
(WTF::Logger::logVerbose):

Modified Paths

Diff

Modified: trunk/ChangeLog (283468 => 283469)


--- trunk/ChangeLog	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/ChangeLog	2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,15 @@
+2021-10-03  Basuke Suzuki  <[email protected]>
+
+        Enable release log to stderr
+        https://bugs.webkit.org/show_bug.cgi?id=230725
+        <rdar://problem/83740529>
+
+        Reviewed by Michael Catanzaro.
+
+        Introduced new flags, USE_LOG_STDERR for release logging to stderr.
+
+        * Source/cmake/WebKitFeatures.cmake:
+
 2021-10-02  Philippe Normand  <[email protected]>
 
         [GTK][WPE] Enable bwrap launcher build on bots

Modified: trunk/Source/WTF/ChangeLog (283468 => 283469)


--- trunk/Source/WTF/ChangeLog	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/ChangeLog	2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,20 @@
+2021-10-03  Basuke Suzuki  <[email protected]>
+
+        Enable release log to stderr
+        https://bugs.webkit.org/show_bug.cgi?id=230725
+        <rdar://problem/83740529>
+
+        Reviewed by Michael Catanzaro.
+
+        Define new compiler definitions, USE_LOG_STDERR for release logging. We don't have
+        modern logging backend so that dumping out to stdout/stderr is still very valuable. 
+
+        * wtf/Assertions.cpp:
+        * wtf/Assertions.h:
+        * wtf/Logger.h:
+        (WTF::Logger::log):
+        (WTF::Logger::logVerbose):
+
 2021-10-02  Philippe Normand  <[email protected]>
 
         [GLib] Media session manager unable to handle more than one session

Modified: trunk/Source/WTF/wtf/Assertions.cpp (283468 => 283469)


--- trunk/Source/WTF/wtf/Assertions.cpp	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Assertions.cpp	2021-10-03 17:19:59 UTC (rev 283469)
@@ -59,7 +59,7 @@
 #include <unistd.h>
 #endif
 
-#if USE(JOURNALD)
+#if !RELEASE_LOG_DISABLED && !USE(OS_LOG)
 #include <wtf/StringPrintStream.h>
 #endif
 
@@ -601,7 +601,7 @@
                 os_log(channel->osLogChannel, "%-3d %p %{public}s", frameNumber, stackFrame, demangled->mangledName());
             else
                 os_log(channel->osLogChannel, "%-3d %p", frameNumber, stackFrame);
-#elif USE(JOURNALD)
+#else
             StringPrintStream out;
             if (demangled && demangled->demangledName())
                 out.printf("%-3d %p %s", frameNumber, stackFrame, demangled->demangledName());
@@ -609,8 +609,12 @@
                 out.printf("%-3d %p %s", frameNumber, stackFrame, demangled->mangledName());
             else
                 out.printf("%-3d %p", frameNumber, stackFrame);
+#if USE(JOURNALD)
             sd_journal_send("WEBKIT_SUBSYSTEM=%s", channel->subsystem, "WEBKIT_CHANNEL=%s", channel->name, "MESSAGE=%s", out.toCString().data(), nullptr);
+#else
+            fprintf(stderr, "[%s:%s:-] %s\n", channel->subsystem, channel->name, out.toCString().data());
 #endif
+#endif
         }
     }
 }

Modified: trunk/Source/WTF/wtf/Assertions.h (283468 => 283469)


--- trunk/Source/WTF/wtf/Assertions.h	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Assertions.h	2021-10-03 17:19:59 UTC (rev 283469)
@@ -95,7 +95,9 @@
 #define LOG_DISABLED !ASSERT_ENABLED
 #endif
 
-#ifndef RELEASE_LOG_DISABLED
+#if ENABLE(RELEASE_LOG)
+#define RELEASE_LOG_DISABLED 0
+#else
 #define RELEASE_LOG_DISABLED !(USE(OS_LOG) || USE(JOURNALD))
 #endif
 
@@ -163,10 +165,10 @@
     WTFLogLevel level;
 #if !RELEASE_LOG_DISABLED
     const char* subsystem;
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#if USE(OS_LOG)
     __unsafe_unretained os_log_t osLogChannel;
 #endif
+#endif
 } WTFLogChannel;
 
 #define LOG_CHANNEL(name) JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, name)
@@ -178,6 +180,8 @@
 #define LOG_CHANNEL_WEBKIT_SUBSYSTEM "WebKitGTK"
 #elif PLATFORM(WPE)
 #define LOG_CHANNEL_WEBKIT_SUBSYSTEM "WPEWebKit"
+#elif PLATFORM(PLAYSTATION)
+#define LOG_CHANNEL_WEBKIT_SUBSYSTEM "SceNKWebKit"
 #else
 #define LOG_CHANNEL_WEBKIT_SUBSYSTEM "com.apple.WebKit"
 #endif
@@ -189,12 +193,10 @@
 #if RELEASE_LOG_DISABLED
 #define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
     WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level };
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
 #define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
     WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level, subsystem, OS_LOG_DEFAULT };
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#else
 #define DEFINE_LOG_CHANNEL_WITH_DETAILS(name, initialState, level, subsystem) \
     WTFLogChannel LOG_CHANNEL(name) = { initialState, #name, level, subsystem };
 #endif
@@ -528,6 +530,7 @@
 /* RELEASE_LOG */
 
 #if RELEASE_LOG_DISABLED
+
 #define PUBLIC_LOG_STRING "s"
 #define PRIVATE_LOG_STRING "s"
 #define RELEASE_LOG(channel, ...) ((void)0)
@@ -543,9 +546,9 @@
 #define RELEASE_LOG_WITH_LEVEL_IF(isAllowed, channel, level, ...) do { if (isAllowed) RELEASE_LOG_WITH_LEVEL(channel, level, __VA_ARGS__); } while (0)
 
 #define RELEASE_LOG_STACKTRACE(channel) ((void)0)
-#endif
 
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
+
 #define PUBLIC_LOG_STRING "{public}s"
 #define PRIVATE_LOG_STRING "{private}s"
 #define RELEASE_LOG(channel, ...) os_log(LOG_CHANNEL(channel).osLogChannel, __VA_ARGS__)
@@ -561,9 +564,9 @@
     if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
         os_log(LOG_CHANNEL(channel).osLogChannel, __VA_ARGS__); \
 } while (0)
-#endif
 
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
+
 #define PUBLIC_LOG_STRING "s"
 #define PRIVATE_LOG_STRING "s"
 #define SD_JOURNAL_SEND(channel, priority, file, line, function, ...) do { \
@@ -587,6 +590,32 @@
     if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
         SD_JOURNAL_SEND(channel, LOG_INFO, __FILE__, _STRINGIFY(__LINE__), __func__, __VA_ARGS__); \
 } while (0)
+
+#else
+
+#define PUBLIC_LOG_STRING "s"
+#define PRIVATE_LOG_STRING "s"
+#define LOGF(channel, priority, fmt, ...) do { \
+    auto& logChannel = LOG_CHANNEL(channel); \
+    if (logChannel.state != WTFLogChannelState::Off) \
+        fprintf(stderr, "[%s:%s:%i] " fmt "\n", logChannel.subsystem, logChannel.name, priority, ##__VA_ARGS__); \
+} while (0)
+
+#define RELEASE_LOG(channel, ...) LOGF(channel, 4, __VA_ARGS__)
+#define RELEASE_LOG_ERROR(channel, ...) LOGF(channel, 1, __VA_ARGS__)
+#define RELEASE_LOG_FAULT(channel, ...) LOGF(channel, 2, __VA_ARGS__)
+#define RELEASE_LOG_INFO(channel, ...) LOGF(channel, 3, __VA_ARGS__)
+
+#define RELEASE_LOG_WITH_LEVEL(channel, logLevel, ...) do { \
+    if (LOG_CHANNEL(channel).level >= (logLevel)) \
+        LOGF(channel, logLevel, __VA_ARGS__); \
+} while (0)
+
+#define RELEASE_LOG_WITH_LEVEL_IF(isAllowed, channel, logLevel, ...) do { \
+    if ((isAllowed) && LOG_CHANNEL(channel).level >= (logLevel)) \
+        LOGF(channel, logLevel, __VA_ARGS__); \
+} while (0)
+
 #endif
 
 #if !RELEASE_LOG_DISABLED

Modified: trunk/Source/WTF/wtf/Logger.h (283468 => 283469)


--- trunk/Source/WTF/wtf/Logger.h	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WTF/wtf/Logger.h	2021-10-03 17:19:59 UTC (rev 283469)
@@ -25,6 +25,7 @@
 
 #pragma once
 
+#include <wtf/Assertions.h>
 #include <wtf/Lock.h>
 #include <wtf/ThreadSafeRefCounted.h>
 #include <wtf/text/StringBuilder.h>
@@ -311,12 +312,12 @@
 
 #if RELEASE_LOG_DISABLED
         WTFLog(&channel, "%s", logMessage.utf8().data());
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
         os_log(channel.osLogChannel, "%{public}s", logMessage.utf8().data());
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
         sd_journal_send("WEBKIT_SUBSYSTEM=%s", channel.subsystem, "WEBKIT_CHANNEL=%s", channel.name, "MESSAGE=%s", logMessage.utf8().data(), nullptr);
+#else
+        fprintf(stderr, "[%s:%s:-] %s\n", channel.subsystem, channel.name, logMessage.utf8().data());
 #endif
 
         if (channel.state == WTFLogChannelState::Off || level > channel.level)
@@ -337,17 +338,17 @@
 
 #if RELEASE_LOG_DISABLED
         WTFLogVerbose(file, line, function, &channel, "%s", logMessage.utf8().data());
-#endif
-#if USE(OS_LOG) && !RELEASE_LOG_DISABLED
+#elif USE(OS_LOG)
         os_log(channel.osLogChannel, "%{public}s", logMessage.utf8().data());
         UNUSED_PARAM(file);
         UNUSED_PARAM(line);
         UNUSED_PARAM(function);
-#endif
-#if USE(JOURNALD) && !RELEASE_LOG_DISABLED
+#elif USE(JOURNALD)
         auto fileString = makeString("CODE_FILE=", file);
         auto lineString = makeString("CODE_LINE=", line);
         sd_journal_send_with_location(fileString.utf8().data(), lineString.utf8().data(), function, "WEBKIT_SUBSYSTEM=%s", channel.subsystem, "WEBKIT_CHANNEL=%s", channel.name, "MESSAGE=%s", logMessage.utf8().data(), nullptr);
+#else
+        fprintf(stderr, "[%s:%s:-] %s FILE=%s:%d %s\n", channel.subsystem, channel.name, logMessage.utf8().data(), file, line, function);
 #endif
 
         if (channel.state == WTFLogChannelState::Off || level > channel.level)

Modified: trunk/Source/WebCore/ChangeLog (283468 => 283469)


--- trunk/Source/WebCore/ChangeLog	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WebCore/ChangeLog	2021-10-03 17:19:59 UTC (rev 283469)
@@ -1,3 +1,23 @@
+2021-10-03  Basuke Suzuki  <[email protected]>
+
+        Enable release log to stderr
+        https://bugs.webkit.org/show_bug.cgi?id=230725
+        <rdar://problem/83740529>
+
+        Reviewed by Michael Catanzaro.
+
+        SQLiteDatabase uses hard-coded %{public} format specifiers. Replace them with defined
+        macro.
+
+        No new tests because there is no behavior change.
+
+        * platform/sql/SQLiteDatabase.cpp:
+        (WebCore::SQLiteDatabase::close):
+        (WebCore::SQLiteDatabase::prepareStatementSlow):
+        (WebCore::SQLiteDatabase::prepareStatement):
+        (WebCore::SQLiteDatabase::prepareHeapStatementSlow):
+        (WebCore::SQLiteDatabase::prepareHeapStatement):
+
 2021-10-03  Simon Fraser  <[email protected]>
 
         REGRESSION (r283335): rubber-banding no longer locks to an axis

Modified: trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp (283468 => 283469)


--- trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/WebCore/platform/sql/SQLiteDatabase.cpp	2021-10-03 17:19:59 UTC (rev 283469)
@@ -261,7 +261,7 @@
             closeResult = sqlite3_close(db);
 
         if (closeResult != SQLITE_OK)
-            RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::close: Failed to close database (%d) - %{public}s", closeResult, lastErrorMsg());
+            RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::close: Failed to close database (%d) - %" PUBLIC_LOG_STRING, closeResult, lastErrorMsg());
     }
 
     if (shouldSetErrorState == ShouldSetErrorState::Yes) {
@@ -717,7 +717,7 @@
     CString query = queryString.stripWhiteSpace().utf8();
     auto sqlStatement = constructAndPrepareStatement(*this, query.data(), query.length());
     if (!sqlStatement) {
-        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %{public}s", query.data());
+        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.data());
         return makeUnexpected(sqlStatement.error());
     }
     return SQLiteStatement { *this, sqlStatement.value() };
@@ -727,7 +727,7 @@
 {
     auto sqlStatement = constructAndPrepareStatement(*this, query.characters(), query.length());
     if (!sqlStatement) {
-        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %{public}s", query.characters());
+        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.characters());
         return makeUnexpected(sqlStatement.error());
     }
     return SQLiteStatement { *this, sqlStatement.value() };
@@ -738,7 +738,7 @@
     CString query = queryString.stripWhiteSpace().utf8();
     auto sqlStatement = constructAndPrepareStatement(*this, query.data(), query.length());
     if (!sqlStatement) {
-        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %{public}s", query.data());
+        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.data());
         return makeUnexpected(sqlStatement.error());
     }
     return UniqueRef<SQLiteStatement>(*new SQLiteStatement(*this, sqlStatement.value()));
@@ -748,7 +748,7 @@
 {
     auto sqlStatement = constructAndPrepareStatement(*this, query.characters(), query.length());
     if (!sqlStatement) {
-        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %{public}s", query.characters());
+        RELEASE_LOG_ERROR(SQLDatabase, "SQLiteDatabase::prepareHeapStatement: Failed to prepare statement %" PUBLIC_LOG_STRING, query.characters());
         return makeUnexpected(sqlStatement.error());
     }
     return UniqueRef<SQLiteStatement>(*new SQLiteStatement(*this, sqlStatement.value()));

Modified: trunk/Source/cmake/WebKitFeatures.cmake (283468 => 283469)


--- trunk/Source/cmake/WebKitFeatures.cmake	2021-10-03 17:10:45 UTC (rev 283468)
+++ trunk/Source/cmake/WebKitFeatures.cmake	2021-10-03 17:19:59 UTC (rev 283469)
@@ -195,6 +195,7 @@
     WEBKIT_OPTION_DEFINE(ENABLE_PICTURE_IN_PICTURE_API "Toggle Picture-in-Picture API support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_POINTER_LOCK "Toggle pointer lock support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_PUBLIC_SUFFIX_LIST "Toggle public suffix list support" PRIVATE ON)
+    WEBKIT_OPTION_DEFINE(ENABLE_RELEASE_LOG "Toggle release log support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_REMOTE_INSPECTOR "Toggle remote inspector support" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_RESOURCE_USAGE "Toggle resource usage support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_RUBBER_BANDING "Toggle rubber banding support" PRIVATE OFF)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to