Swift宏中的OSLog不保留原始文件/行号

xoefb8l8  于 2023-10-15  发布在  Swift
关注(0)|答案(2)|浏览(95)

我需要将日志记录到OSLog并并行记录到一个文件中(由于OSLogStore无法提供旧日志)。
在XNUMX-C中,我可以使用宏实现中的__FILE____LINE__来实现这一点,它们仍然引用原始代码中的位置。我试着创建一个Swift宏来让它在Swift中工作。但是,log()采用宏定义文件的文件号和行号,而不是在调用代码中的位置。因此,当我单击元数据链接时,我将被带到宏而不是调用位置。
有什么解决办法吗?#file#line在宏中正确设置,但无法为log()函数指定文件和行号。

5vf7fwbs

5vf7fwbs1#

不幸的是,你没有办法做到这一点 *。苹果在他们的无限智慧中认为没有人会做这样的事情。
来自苹果论坛的内部Eskimo居民的建议是,你写一个Swift宏来 Package 它,基本上为每个日志语句写两行日志。

  • 严格地说不是真的。您可以自己 Package C API,但通常不建议这样做
yhxst69z

yhxst69z2#

我也遇到过类似的问题,通过将OSLogStore内容转储到文件中来解决它。

相关问题