Как я могу отключить определенный уровень журнала oslog? - PullRequest
0 голосов
/ 13 декабря 2018

Для следующей функции:

let authenticationLogger = OSLog(subsystem: "com.Company.AppNameQA" ?? "Empty bundleIdentifier", category: "Authenticaiton)

Что мне делать, если я хочу отключить / включить определенный уровень журнала?

В настоящее время с API единственное, что явозможность доступа к функции isEnabled:

authenticationLogger.isEnabled(.error) 

, которая просто возвращает, включена она или нет.

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Вы можете использовать пользовательскую логику или переменные среды, чтобы решить, следует ли отключить их, назначив OSLog.disabled.

Этот пример из сеанса WWDC 2018 Измерение производительности с помощью ведения журнала использует переменную среды, чтобы определить, следует ли отключить этот дескриптор журнала:

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, она автоматически отключит все журналы, которые используют этот дескриптор журнала..

0 голосов
/ 14 декабря 2018

Я еще не пробовал это.Но я считаю, что это решение

Чтение из документов .

В разделе:

Настройка поведения ведения журнала при отладке

Поведение ведения журнала обычно определяется системой.Тем не менее, при отладке в macOS вы можете включить различные уровни ведения журнала для подсистемы, используя аргумент config утилиты командной строки log , войдя в систему как пользователь 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/ Логирование / Подсистемы / Каталог.Назовите файл, используя строку идентификатора в обратном формате 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>

В двух словах, вы не можете изменить уровень журнала по сравнению с кодом в рабочей среде.Вы можете изменить его только во время отладки.Какая польза от этого?Я не уверен!

...