[Lldb-commits] [lldb] [lldb] Add a log level to Host::SystemLog (PR #90904)
via lldb-commits
lldb-commits at lists.llvm.org
Thu May 2 13:21:43 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Jonas Devlieghere (JDevlieghere)
<details>
<summary>Changes</summary>
Add the ability to specify a log level to Host::SystemLog.
---
Full diff: https://github.com/llvm/llvm-project/pull/90904.diff
3 Files Affected:
- (modified) lldb/include/lldb/Host/Host.h (+8-1)
- (modified) lldb/source/Host/common/Host.cpp (+26-4)
- (modified) lldb/source/Host/macosx/objcxx/Host.mm (+10-2)
``````````diff
diff --git a/lldb/include/lldb/Host/Host.h b/lldb/include/lldb/Host/Host.h
index 30549cd7891497..b0cb477d82fa14 100644
--- a/lldb/include/lldb/Host/Host.h
+++ b/lldb/include/lldb/Host/Host.h
@@ -87,8 +87,15 @@ class Host {
StartMonitoringChildProcess(const MonitorChildProcessCallback &callback,
lldb::pid_t pid);
+ /// System log level.
+ enum SystemLogLevel {
+ eSystemLogInfo,
+ eSystemLogWarning,
+ eSystemLogError,
+ };
+
/// Emit the given message to the operating system log.
- static void SystemLog(llvm::StringRef message);
+ static void SystemLog(SystemLogLevel log_level, llvm::StringRef message);
/// Get the process ID for the calling process.
///
diff --git a/lldb/source/Host/common/Host.cpp b/lldb/source/Host/common/Host.cpp
index 565138ba17031f..a0aa6a62755f92 100644
--- a/lldb/source/Host/common/Host.cpp
+++ b/lldb/source/Host/common/Host.cpp
@@ -91,15 +91,37 @@ using namespace lldb_private;
#if !defined(__APPLE__)
#if !defined(_WIN32)
#include <syslog.h>
-void Host::SystemLog(llvm::StringRef message) {
+void Host::SystemLog(SystemLogLevel log_level, 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());
+ int level = LOG_DEBUG;
+ switch (log_level) {
+ case eSystemLogInfo:
+ level = LOG_INFO;
+ break;
+ case eSystemLogWarning:
+ level = LOG_WARNING;
+ break;
+ case eSystemLogError:
+ level = LOG_WARNING;
+ break;
+ }
+ syslog(level, "%s", message.data());
}
#else
-void Host::SystemLog(llvm::StringRef message) { llvm::errs() << message; }
+void Host::SystemLog(SystemLogLevel log_level, llvm::StringRef message) {
+ switch (log_level) {
+ case eSystemLogInfo:
+ case eSystemLogWarning:
+ llvm::outs() << message;
+ break;
+ case eSystemLogError:
+ llvm::errs() << message;
+ break;
+ }
+}
#endif
#endif
@@ -629,5 +651,5 @@ char SystemLogHandler::ID;
SystemLogHandler::SystemLogHandler() {}
void SystemLogHandler::Emit(llvm::StringRef message) {
- Host::SystemLog(message);
+ Host::SystemLog(Host::eSystemLogInfo, message);
}
diff --git a/lldb/source/Host/macosx/objcxx/Host.mm b/lldb/source/Host/macosx/objcxx/Host.mm
index 070a49208639a2..1f67141de55d70 100644
--- a/lldb/source/Host/macosx/objcxx/Host.mm
+++ b/lldb/source/Host/macosx/objcxx/Host.mm
@@ -102,12 +102,20 @@
static os_log_t g_os_log;
static std::once_flag g_os_log_once;
-void Host::SystemLog(llvm::StringRef message) {
+void Host::SystemLog(SystemLogLevel log_level, llvm::StringRef message) {
if (__builtin_available(macos 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
std::call_once(g_os_log_once, []() {
g_os_log = os_log_create("com.apple.dt.lldb", "lldb");
});
- os_log(g_os_log, "%{public}s", message.str().c_str());
+ switch (log_level) {
+ case eSystemLogInfo:
+ case eSystemLogWarning:
+ os_log(g_os_log, "%{public}s", message.str().c_str());
+ break;
+ case eSystemLogError:
+ os_log_error(g_os_log, "%{public}s", message.str().c_str());
+ break;
+ }
} else {
llvm::errs() << message;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/90904
More information about the lldb-commits
mailing list