Вы применяете os_log
, указывая некоторый глобальный объект OSLog. Просто замените этот объект на OSLog.disabled
, и теперь сообщения, отправленные через него, нигде не будут go.
Пример:
let _activeLog = OSLog(subsystem: "hey", category: "ho")
let _inactiveLog = OSLog.disabled
var heyHoEnabled = true
var myLog : OSLog { heyHoEnabled ? _activeLog : _inactiveLog }
Теперь:
os_log(.debug, log: myLog, "hey") // logged
os_log(.debug, log: myLog, "ho") // logged
self.heyHoEnabled = false
os_log(.debug, log: myLog, "hey nonny no") // not logged
Но допустим, вы все еще хотите отправлять сообщения; Вы просто не можете видеть их. На уровне консоли нельзя сказать «не показывать мне 1014 * определенные сообщения». Вы можете фильтровать консоль, но только по тому, что вы хотите , а не по тому, что вы не хотите.
Кстати, тот факт, что os_log
сообщения go в консоль Xcode - это дополнительная функция. Основное место, где они появляются, - это Консольное приложение. И сообщения консоли могут быть отфильтрованы так, чтобы включать только те подсистемы или категории, которые вы хотите. Это очень мощный фильтр, гораздо более мощный и точный, чем консоль Xcode.
Так что, если все ваших сообщений консоли являются os_log
сообщениями с различными подсистемами или категориями, то вы можно использовать консольное приложение для фильтрации очень мощными способами.