对于以下功能:
let authenticationLogger = OSLog(subsystem: "com.Company.AppNameQA" ?? "Empty bundleIdentifier", category: "Authenticaiton)
如果要禁用/启用某个日志级别该怎么办?
当前使用API,我唯一能访问的是isEnabled
功能:
authenticationLogger.isEnabled(.error)
只会返回是否已启用。
答案 0 :(得分:0)
我还没有尝试过。但我相信这是解决方案
从docs中读取。
在以下部分中:
日志记录行为通常由系统控制。但是,同时 在macOS中进行调试,您可以为 子系统使用log 命令行工具的 config参数,而 以root用户身份登录。请参见清单5,其中显示了如何启用 子系统的调试级别日志记录。
$ sudo log config --mode "level:debug" --subsystem com.your_company.your_subsystem_name
使用日志工具的状态参数来检查子系统的当前日志记录级别。
$ sudo log config --status --subsystem com.your_company.your_subsystem_name
Mode for 'com.your_company.your_subsystem_name' DEBUG
您还可以通过在/ Library / Preferences / Logging / Subsystems /目录中创建并安装日志记录配置概要文件属性列表文件来覆盖特定子系统的日志记录行为。使用标识符字符串(以反向DNS表示)来命名文件,该字符串代表子系统。例如,com.your_company.your_subsystem_name.plist
。接下来,将一个或多个设置词典添加到文件的顶层。 DEFAULT-OPTIONS设置字典定义了整个子系统的全局行为设置。类别设置词典定义子系统内特定类别消息的行为。
日志配置文件的顶级结构
<dict>
<key>DEFAULT-OPTIONS</key>
<dict>
<!-- GLOBAL SUBSYSTEM OR PROCESS SETTINGS -->
</dict>
<key>CategoryName</key>
<dict>
<!-- CATEGORY SETTINGS -->
</dict>
</dict>
答案 1 :(得分:0)
您可以使用自定义逻辑或环境变量来确定是否通过分配OSLog.disabled
来禁用它们。
来自WWDC 2018会话Measuring Performance Using Logging的此示例使用环境变量来确定是否禁用此日志句柄:
let refreshLog: OSLog
if ProcessInfo.processInfo.environment.keys.contains("SIGNPOSTS_FOR_REFRESH") {
refreshLog = OSLog(subsystem: "com.example.your-app", category: "RefreshOperations")
} else {
refreshLog = .disabled
}
将.disabled
分配给OSLog
变量后,它将自动禁用所有使用该日志句柄的日志。