Я использую Wrapper в личном пакете Swift для использования os_log
для печати сообщений журнала на консоль:
import Foundation
import os
public class ATLogger {
public static let shared = ATLogger()
public func logToConsole(file: String = #file, function: String = #function, line: Int = #line, message: String, type: OSLogType) {
let osLog: OSLog
if let subsystem = Bundle.main.bundleIdentifier {
osLog = OSLog(subsystem: subsystem, category: "Appfrosch")
} else {
osLog = .default
}
let file = String(file.split(separator: "/").last ?? "")
os_log("*** %{public}s/%{public}s, line %d -- %s", log: osLog, type: type, file, function, line, message)
}
}
Затем я вызываю его там, где считаю нужным, например, в моем SceneDelegate для входа запуск приложения выглядит так:
ATLogger.shared.logToConsole(message: "Application started", type: .default)
Это прекрасно работает при запуске версии катализатора из Xcode на macOS для всех уровней журнала - т.е. все сообщения видны на консоли (у меня есть Debug и Информация активирована):
Моя проблема в том, что когда я делаю артефакт указанного приложения путем архивирования, а затем копирую его в свою систему, запускается приложение не показывает эти же сообщения на консоли.
sudo log stream --level default | grep Appfrosch
дает тот же результат: приложения успешно регистрируются при запуске из Xcode, но не при запуске как артефакт.
Чего мне не хватает?