如何禁用某个 oslog 日志级别?

Hon*_*ney 5 xcode logging ios swift oslog

对于以下函数:

let authenticationLogger = OSLog(subsystem: "com.Company.AppNameQA" ?? "Empty bundleIdentifier", category: "Authenticaiton)
Run Code Online (Sandbox Code Playgroud)

如果我想禁用/启用某个日志级别该怎么办?

目前,使用 API,我唯一能够访问的是isEnabled以下功能:

authenticationLogger.isEnabled(.error) 
Run Code Online (Sandbox Code Playgroud)

它只返回它是否启用。

Hon*_*ney 3

我还没试过这个。但我相信这就是解决方案

\n\n

从文档中读取。

\n\n

在以下部分下:

\n\n

调试时自定义日志记录行为

\n\n
\n

日志记录行为通常由系统控制。但是,在 macOS 中进行调试时,您可以在以 root 身份登录时使用 log命令行工具\xe2\x80\x99s配置参数为子系统启用不同的日志记录级别。请参见清单 5,其中显示了如何为子系统启用调试级别日志记录。

\n
\n\n

为子系统启用调试级别日志记录

\n\n
$ sudo log config --mode "level:debug" --subsystem com.your_company.your_subsystem_name\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用 log tool\xe2\x80\x99s status 参数检查子系统的当前日志记录级别。

\n\n

检查子系统的日志级别

\n\n
$ sudo log config --status --subsystem com.your_company.your_subsystem_name\nMode for \'com.your_company.your_subsystem_name\'  DEBUG\n
Run Code Online (Sandbox Code Playgroud)\n\n

您还可以通过在 /Library/Preferences/Logging/Subsystems/ 目录中创建并安装日志记录配置文件属性列表文件来覆盖特定子系统的日志记录行为。使用表示子系统的标识符字符串(采用反向 DNS 表示法)命名该文件。例如,com.your_company.your_subsystem_name.plist。接下来,将一个或多个设置字典添加到文件的顶层。DEFAULT-OPTIONS 设置字典定义整个子系统的全局行为设置。类别设置字典定义子系统内特定类别消息的行为。

\n\n

日志记录配置文件的顶级结构

\n\n
<dict>\n    <key>DEFAULT-OPTIONS</key>\n    <dict>\n       <!-- GLOBAL SUBSYSTEM OR PROCESS SETTINGS -->\n    </dict>\n    <key>CategoryName</key>\n    <dict>\n       <!-- CATEGORY SETTINGS -->\n    </dict>\n</dict>\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

简而言之,您无法在生产中更改代码中的日志级别。您只能在调试期间更改它。它能有什么用呢?我不知道!

\n