我如何在Xamarin.iOS中使用iOS的OSLog?
我已经成功地使用了以下NSLog,但我无法找到设置子系统(到包标识符)的方法,以便我可以在Console.app中过滤日志。
public class Logger
{
#if DEBUG
[DllImport(ObjCRuntime.Constants.FoundationLibrary)]
private extern static void NSLog(IntPtr message);
#endif
public void WriteLine(string line)
{
#if DEBUG
using (var nss = new NSString(line))
{
NSLog(nss.Handle);
}
#endif
}
}
os_log_t
的包装器),所以我回答了这个问题。如果你想使用统一日志系统并将os_log_t
传递给它,我建议查看os/log.h
。_os_log_impl
是统一日志记录的基本方法(_os_log_internal
已过时),你可以从C#到ObjC中转换它的参数。再次强调,你应该查看os/log.h,因为它大部分只是将os_log_type_enabled
和低级别的_os_log_impl
调用进行包装的宏。 - SushiHangoveros_log_with_type
只是一个宏,用于os_log_type_enabled
和_os_log_impl
(这在os/log.h
中定义)。对于仅使用OS_LOG_TYPE_DEBUG
的os_log_type
,您可以使用Console.Writeline
。但是,如果您想控制类别、绑定子 ID 等,则_os_log_impl
是您想要的调用,因为它是 ObjC 宏和 Swift 框架正在使用的内核调用。 - SushiHangover_os_log_internal
,对吗? - Sören Kuklau