aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2024-03-05 10:56:01 -0800
committerGitHub <noreply@github.com>2024-03-05 10:56:01 -0800
commit1b812f9cd64c14ab7600626c147da88f21e0217c (patch)
tree78a7635cfcfd91182005b0c1665c268cec4ea9b4
parent083d8aa03aca55b88098a91e41e41a8e321a5721 (diff)
downloadllvm-1b812f9cd64c14ab7600626c147da88f21e0217c.zip
llvm-1b812f9cd64c14ab7600626c147da88f21e0217c.tar.gz
llvm-1b812f9cd64c14ab7600626c147da88f21e0217c.tar.bz2
[lldb] Log to system log instead of stderr from Host::SystemLog (#83366)
Currently, calls to Host::SystemLog print to stderr on all host platforms except Darwin. This severely limits its value on the command line, where we don't want to overload the user with log messages. Switch to using the syslog function on POSIX systems to send messages to the system logger instead of stdout. On Darwin systems this sends the log message to os_log, which matches what we do today. Nevertheless I kept the current implementation that uses os_log directly as it gives us more freedom. I'm not sure if there's an equivalent on Windows, so I kept the existing behavior of logging to stderr.
-rw-r--r--lldb/source/Host/common/Host.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lldb/source/Host/common/Host.cpp b/lldb/source/Host/common/Host.cpp
index f4cec97..565138b 100644
--- a/lldb/source/Host/common/Host.cpp
+++ b/lldb/source/Host/common/Host.cpp
@@ -89,8 +89,19 @@ using namespace lldb;
using namespace lldb_private;
#if !defined(__APPLE__)
+#if !defined(_WIN32)
+#include <syslog.h>
+void Host::SystemLog(llvm::StringRef message) {
+ static llvm::once_flag g_openlog_once;
+ llvm::call_once(g_openlog_once, [] {
+ openlog("lldb", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
+ });
+ syslog(LOG_INFO, "%s", message.data());
+}
+#else
void Host::SystemLog(llvm::StringRef message) { llvm::errs() << message; }
#endif
+#endif
#if !defined(__APPLE__) && !defined(_WIN32)
static thread_result_t