尝试使用 Logger 将长数组打印到控制台。我注意到有些实体丢失了。意识到这是由于记录器消息末尾被
<…>
切断所致。
官方参考资料中没有关于os_log长度限制的信息。然而我发现 Eskimo 的一篇文章提到它的大小限制为 1kb:
位于统一日志记录之上,它对日志记录有限制 任何给定日志条目中动态内容的长度(1024 字节,如果我 记得正确)。NSLog
您将如何将更长的消息打印到控制台?不推荐
print
,因为它仅适用于 Xcode 调试器。
我通过实验验证它似乎被限制在不到 1kb。它不仅仅是控制台应用程序,还包括日志捕获/日志显示的命令行呈现。但 Xcode 控制台不受此限制。
如果您确实需要超过 1kb,您可以将其分成单独的日志消息。
例如,考虑:
import os.log
class ApiManager {
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "ApiManager")
func perform(_ url: URL) async throws {
logger.info("\(#function, privacy: .public): \(url, privacy: .public)")
logger.error("Line 1")
logger.error("Line 2")
logger.error("Line 3")
}
}
FWIW,作为实践问题,我总是使用与进行日志记录的子系统/类型关联的“类别”。下面,我对该类别进行过滤以减少控制台中的噪音。我通常也会过滤“子系统”。
然后,在控制台中查看它时,您可以右键单击一条消息并选择“显示活动 ID”。例如,我首先在控制台中过滤来自“ApiManager”类别的消息。看到三组错误,我可以右键单击其中一组并选择“显示活动 ID”,然后我只看到与该特定活动相关的消息。将范围缩小到给定的活动后,我可以删除“ApiManager”过滤器,然后我会看到与该活动相关的更完整的消息列表,将我的错误消息放在更广泛的上下文中: