macOS 应用程序既可用作命令行应用程序,也可用作 GUI 应用程序,如何抑制系统日志输出到 stderr?

问题描述 投票:0回答:0

我是一名老程序员,自学 macOS 并制作自己使用的工具。

我有一个应用程序可以有条件地启动 GUI,但是当它启动 GUI 时,系统会将日志信息打印到

stderr
。我怎样才能以编程方式防止这种情况?

我正在像这样启动 GUI:

    NSApplication.shared.run()

我不希望来自操作系统的日志信息如下所示:

1   HIToolbox       0x00000001902e05c8 _ZN15MenuBarInstance22EnsureAutoShowObserverEv + 120
2   HIToolbox       0x00000001902e0188 _ZN15MenuBarInstance14EnableAutoShowEv + 60
3   HIToolbox       0x0000000190283310 SetMenuBarObscured + 372
4   HIToolbox       0x0000000190282ee8 _ZN13HIApplication15HandleActivatedEP14OpaqueEventRefhP15OpaqueWindowPtrh + 172
5   HIToolbox       0x000000019027cfcc _ZN13HIApplication13EventObserverEjP14OpaqueEventRefPv + 296
6   HIToolbox       0x0000000190243cd0 _NotifyEventLoopObservers + 176
7   HIToolbox       0x000000019027c96c AcquireEventFromQueue + 432
8   HIToolbox       0x000000019026be0c ReceiveNextEventCommon + 712
9   HIToolbox       0x000000019026bb2c _BlockUntilNextEventMatchingListInModeWithFilter + 72
10  AppKit          0x0000000189e18424 _DPSNextEvent + 632
11  AppKit          0x0000000189e175b4 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 728
12  AppKit          0x0000000189e0b9e4 -[NSApplication run] + 464
13  macos-cond-gui  0x0000000104cd0764 main + 2148
14  dyld            0x000000018678fe50 start + 2544

我意识到我可以重定向

stderr
。我正在寻找一种编程解决方案,以便应用程序不会将其强加给用户。我还想将我自己的消息输出到
stderr
,我不想隐藏这些消息。

macos logging stderr
© www.soinside.com 2019 - 2024. All rights reserved.