我如何使用 iOSOSLog https://developer.apple.com/documentation/os/oslog在 Xamarin.iOS 中?
我确实成功地使用了 NSLog,如下所示,但我看不到如何使用 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
}
}
In Xamarin.iOS
,有一个静态CoreFoundation.OSLog
称为的对象Default
可以立即使用,它将记录指定的消息OSLogLevel
论据如OSLogLevel.Debug
, OSLogLevel.Error
ETC。
你可以有一个方法Xamarin.iOS
记录消息的代码Debug
level:
using CoreFoundation;
// ...
public void Write(string message)
{
OSLog.Default.Log(OSLogLevel.Debug, message);
}
如果你想使用子系统和类别,你必须实例化一个实例OSLog
使用适当的构造函数并使用该实例来记录您的消息。大概您希望保留对创建的实例的静态引用并像使用它一样使用它OSLog.Default
.
public partial class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public static OSLog LoggerInstance;
public override bool FinishedLaunching(UIApplication app, NSDictionary launchOptions)
{
LoggerInstance = new OSLog(subsystem: "subsystem", category: "category");
//...
public class SomeClass
{
public void SomeMethod()
{
AppDelegate.LoggerInstance?.Log(OSLogLevel.Debug, "log message");
// ...
}
这将在设备日志中打印一条相当不错的消息,其中包含时间戳并显示指定的类别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)