如何将 iOS OSLog 与 Xamarin 结合使用?

2024-01-05

我如何使用 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.ErrorETC。 你可以有一个方法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(使用前将#替换为@)

如何将 iOS OSLog 与 Xamarin 结合使用? 的相关文章

随机推荐

  • Android 版 Canvas 中的撤消和重做

    我正在使用定制版本指甲油 http developer android com resources samples ApiDemos src com example android apis graphics FingerPaint htm
  • 如何在 ASP.net core 中按请求缓存

    我的旧代码如下所示 public static class DbHelper One conection per request public static Database CurrentDb if HttpContext Current
  • JavaScript 中的变量有多昂贵?

    局部变量有多昂贵 var v 全局变量 window v 和跨全局变量 parent v 在 JavaScript 中 在主要浏览器中 有人对此进行过良好的测试吗 忽略解释器 解析器的优缺点 重要的是运行时必须查看作用域链的各个部分的程度
  • 带钩子的应用程序加载启动画面

    在使用带钩子的功能组件时 如何实现加载资源的同时显示闪屏 使用带有钩子的应用程序加载和 或启动屏幕的模式是什么 Thanks Bill 如果你只明白Hook s useState 这是一个非常容易的改变 这可以简单地转换为函数 并使用以下方
  • 如何设计协议缓冲区中未来的附加枚举值?

    Protocol buffers 的吸引人的功能之一是它允许您扩展消息定义 而不会破坏使用旧定义的代码 对于枚举的情况根据文档 https developers google com protocol buffers docs proto
  • Windows 中的网络文件传输

    我想使用 C 或 C 通过网络传输文件 我应该查找哪些主题 我怎样才能做到这一点 您应该从选择协议开始 HTTPS http en wikipedia org wiki HTTPS and SFTP http en wikipedia or
  • Java ArrayList / String / 原子变量读取线程安全吗?

    我一直在思考和阅读 但可以找到绝对权威的答案 我有几个由包含 ArrayList 字符串和原始值的对象组成的深层数据结构 我可以保证这些结构中的数据不会改变 没有线程会对列表进行结构更改 更改引用 更改原语 我想知道读取这些结构中的数据是否
  • IOError:设备上没有剩余空间 - 哪个设备?

    我正在将一个小文件 8 5 Mb 上传到 Flask 测试服务器 文件上传完成后 服务器报告 File home ubuntu virtualenvs eco app lib python2 7 site packages wtforms
  • Angular2 rxjs http.request.catch 对于某些 http 错误有奇怪的行为

    我的 http 服务无法正确捕获一些 http 错误 catch 方法有 2 个不同的响应对象 见下文 private fireRequest request Request Observable
  • Shmem vs tmpfs vs mmap [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ASP.NET MVC 脚本包未呈现

    我已将以下行包含在BundleConfig cs file bundles Add new ScriptBundle bundles jqueryajax Include Scripts jquery unobtrusive ajax mi
  • Firestore如何从另一个集合文档id引用中获取集合值

    I have two fire store collection with following reference image I want to get the firstName and title Here signup id is
  • C 中使用 enum 和 int 变量的区别

    有什么区别 enum week Mon Tue Wed Thur Fri Sat Sun enum week day Wed and enum week Mon Tue Wed Thur Fri Sat Sun int day Wed in
  • for 循环中的 Swift async/await

    我对 WWDC 2021 上宣布的 Swift 5 5 中新的异步 等待模式感到摸不着头脑 似乎涉及到很多学习内容 但并不像想象的那么容易掌握 我刚刚在 WWDC 视频中看到了这个 for 循环 for await id in static
  • 列出所有没有远程的本地分支

    问题 我想要一种删除所有没有远程的本地分支的方法 将分支名称通过管道传输到git branch D branch name 但是我首先如何获得该列表呢 例如 我创建一个没有遥控器的新分支 git co b no upstream 我列出了所
  • 权限拒绝:从 pid=-1 访问服务 ComponentInfo {...}

    我正在尝试使用 Google 的活动识别服务 几天前 一切都很顺利 即我可以使用该服务连接来获取活动信息 但今天我发现我再也收不到了 查看日志后发现这个错误 05 15 21 19 27 196 W ActivityManager 765
  • 使用内存映射文件的缺点

    我的网络服务每分钟写入数千笔交易 我们将它们保存在硬盘上 我正在测试保存这些文件的不同方法 并使用标准 IO 和 MemoryMapped 文件进行了一些测试 在我的结果中 使用 MemoryMapped 文件写入文件 20 k 文本文件
  • Xcode Server Bot 集成无法导出存档并出现断言失败:exportArchive:ipatool 失败并出现异常

    我有一个使用 Xcode 7 2 和 Server 5 0 15 构建的服务器设置 这样我们就可以进行 CI 我能够创建一个 Xcode 机器人来创建存档 但它无法完成最后一步 即将 ipa 存档导出到服务器 以便可以通过临时构建下载它 我
  • 如何检查目录是否存在并如果不存在则创建一个新目录?

    我尝试了以下方法 但我认为它不是特别漂亮 let path target dir if std path Path new path exists std fs create dir path std fs create dir all h
  • 如何将 iOS OSLog 与 Xamarin 结合使用?

    我如何使用 iOSOSLog https developer apple com documentation os oslog在 Xamarin iOS 中 我确实成功地使用了 NSLog 如下所示 但我看不到如何使用 NSLog 设置子系