使用 Objective C 读取发布到设备控制台的日志消息

2024-02-23

我的 iOS 应用程序如何从设备控制台日志中读取消息。我想以编程方式读取这些日志条目(例如读取文件?),选择一些日志条目,然后通过电子邮件将其发送给支持人员。

我知道有一款 iPhone 应用程序可以让您查看日志。它的名字是控制台。但是,我无法弄清楚他使用了哪些类或 API。有人建议这是使用 ASL 函数完成的,但我不知道这些函数是什么或它们的文档记录在哪里。

我还知道使用 NSLog 的几种替代方案,例如 NSLogger 和 CocoaLumberJack,但我们目前还没有准备好实现这些。

非常感谢您的帮助!


此条目 http://www.cocoanetics.com/2011/03/accessing-the-ios-system-log/Cocoanetics 博客中提供了使用 ASL(Apple System Logger)API 访问 iOS 上的系统日志的示例代码(man page https://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/asl.3.html):

aslmsg q, m;
int i;
const char *key, *val;

q = asl_new(ASL_TYPE_QUERY);

aslresponse r = asl_search(NULL, q);
while (NULL != (m = aslresponse_next(r)))
{
    NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];

    for (i = 0; (NULL != (key = asl_key(m, i))); i++)
    {
        NSString *keyString = [NSString stringWithUTF8String:(char *)key];

        val = asl_get(m, key);

        NSString *string = [NSString stringWithUTF8String:val];
        [tmpDict setObject:string forKey:keyString];
    }

    NSLog(@"%@", tmpDict);
}
aslresponse_free(r);

请注意,您需要轮询 ASL 才能读取最新消息。上面的代码在 iPhone 模拟器上运行时也会失败,但在实际设备上运行得很好。

如果你不想对抗 C ASL API,可以看看这个 Objective-C 包装器,名为ASLogger https://github.com/AlanQuatermain/aqtoolkit/tree/3c962940928de3758e74cb3d230c37222bceae7f/ASLogger.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Objective C 读取发布到设备控制台的日志消息 的相关文章

  • 如何在 iOS 上捕获的视频中添加水印[重复]

    这个问题在这里已经有答案了 我想知道是否有人可以告诉我如何实现这一目标 如果一直在考虑几个解决方案 从捕获的视频创建单独的图像 然后将它们合并到每个图像中 然后创建一个新的 AVAsset 听起来有点复杂 您不觉得吗 合并2个视频 一个是透
  • SKAudioNode 崩溃:AVAudioPlayerNode.mm:333:开始:所需条件为 false:_engine->IsRunning()

    我有一个简单的 SKAudioNode let backgroundSound SKAudioNode fileNamed backgroundSound mp3 我用来玩backgroundSound runAction SKAction
  • 如何在 Facebook SDK for iOS 中定义“GeoPoint”属性

    我试图通过创建一个继承预定义 地点 对象的开放图对象来对开放图故事进行地理标记 但是 我不知道如何在 iOS 中定义 GeoPoint 属性 place location 这里有一个类似问题的答案 https stackoverflow c
  • Three20中的TTSpeechBubbleShape仅绘制“语音”三角形顶部和底部

    因此 我将 Three20 库用于 iPhone 应用程序 并希望将 TTSpeechBubbleShape 样式用于视图 但三角形似乎不想画在左边或右边 我在源代码中看到它有很多几何图形 并且想知道是否有人解决了这个问题或知道如何解决它
  • Pycharm 中的 Traitlets.traitlets.TraitError

    我是Python的初学者 我面临以下问题 每当我启动 pycharm 社区版 版本 5 0 3 时 Python 控制台无法启动并显示以下错误 usr bin python2 7 usr lib pycharm community help
  • 这样理解Activity类似于iOS中的ViewController就可以了吗?

    这样理解Activity类似于iOS中的ViewController就可以了吗 我很困惑接受 Android 中的术语概念 如 活动 服务 等 是的 我想说 Activity 和 ViewController 非常相似 只有一个很大的区别
  • 依赖于 pod 的 Swift 通用框架

    我正在开发一个依赖于 Alamofire 的小型 Swift 框架 我将它用作属于同一工作区的应用程序的嵌入式框架 并且它运行良好 当我想构建一个具有总体目标的通用框架时 问题就出现了 然后 当执行脚本生成框架时 它失败并显示消息No su
  • 如何在谷歌地图中绘制多个点之间的路线?

    我已经在我的应用程序中实现了谷歌地图 并且我需要在地图上标记几个点 我能够用标记标记它们 但我面临的问题是尝试绘制所有这些点之间的路径 我尝试使用折线 但它只是在 A 点和 B 点之间绘制一条直线 我还尝试了谷歌地图 DirectionsA
  • NSView 鼠标跟踪

    我在 Mac OS X 上遇到了 Cocoa NSView 的奇怪行为 我在 NSView 容器中有一个自定义 NSView 这个自定义 NSView 跟踪鼠标移动 点击 并有一个工具提示 当我在所描述的视图上方添加 NSView 时 即使
  • 在 iOS Swift 2 中实现“阅读更多”按钮以展开 UITextView 的最简单方法?

    我希望实现一个 阅读更多 按钮 该按钮将扩展 UITextView 以便有人可以根据需要阅读整个文本 我还没有找到一种简单的方法来实现这一目标 我尝试 玩弄 容器的高度 但它没有给我想要的结果 我真的很感激任何想法 我会推荐你 ilyapu
  • 停止 ARC 在空闲时释放对象

    我在 Objective C 中遇到内存管理问题 我一直在阅读高级内存管理编程指南 https developer apple com library mac documentation Cocoa Conceptual MemoryMgm
  • 当前图像选择模式会擦除 UI

    我下面有一个非常简单的视图控制器 UI 实际上只是一个带有底部标签栏的按钮 import UIKit class ImageAdderViewController UIViewController override func viewDid
  • 将 UIPanGestureRecognizer 添加到 UIScrollView 时禁用滚动

    我有一个滚动视图 我想让它在平移完成时消失 它工作正常 平移时滚动视图消失 但问题是现在我无法滚动内容 UIView animateWithDuration 0 2 delay 0 2 options UIViewAnimationCurv
  • iOS模型层通知Controller对象

    https developer apple com library archive documentation General Conceptual DevPedia CocoaCore MVC html https developer a
  • CAKeyFrameAnimation 中的 keyTime 是什么样的值?

    例如我有这个 CAKeyFrameAnimation CALayer theLayer myView layer CAKeyframeAnimation animation animation CAKeyframeAnimation ani
  • 如何检测按下的返回键并使用 UIKeyInput 协议对其进行响应?

    我有一个表视图 显示我希望用户能够编辑的列表 为了节省空间 并且让我的视图更容易看清 我创建了一个符合 UIKeyInput 协议的自定义工具栏 这样我就可以拉起键盘而无需使用任何文本字段 到目前为止 一切都很好 我有一个可变字符串正在处理
  • 如何使用 log4j2.xml 配置 hibernate 日志记录?

    我最近切换到 Apache log4j2 但仍然找不到使用 log4j2 xml 配置 hibernate 日志记录的方法 因为我找不到解决此问题的方法 所以我仍然显式使用 log4j properties 文件进行休眠 这不是最好的解决方
  • 如何让 Chrome Cast 在 iOS 后台运行?

    我有一个简单的问题 当您进入 iPhone 的主屏幕并且不退出应用程序时 chrome Cast 设备会停止在屏幕上播放视频 当应用程序在后台运行时 我如何才能保持播放状态 如果您有一个视频应用程序并且它在投射设备中运行 您可能需要以下行为
  • 将UIWebView显示的PDF保存到本地

    我有一个UIViewController与UIWebView显示一个 pdf 文件 具体取决于之前单击的行UITableView 现在我想添加一个按钮 供用户在本地保存此 pdf 文件以供离线使用 然后还有第二个UITableView它应该
  • 使 html svg 对象也成为可点击的链接(在 iPhone 上)

    这个问题与使 html svg 对象也成为可点击的链接 https stackoverflow com q 11374059 4825796 但给出的答案似乎不适用于 iPhone ios 9 3 safari 和 chrome 浏览器 我

随机推荐

  • 在非 boost 线程中使用 boost::thread_specific_ptr

    我正在阅读文档部分boost thread specific ptr http www boost org doc libs 1 55 0 doc html thread thread local storage html 并尝试解析这一段
  • 无法在 Windows 上打印彩色文本

    我是 Python 新手 试图在控制台中打印彩色文本 我的操作系统是windows 10 代码如下 class bcolors Colors for console HEADER 033 95m YGREEN 033 92m WARNING
  • 为什么新的 Pick 类型允许 React 的 setState() 中 K 的子集?

    我以为我明白了新的目的TS 2 1 Pick type https www typescriptlang org docs handbook release notes typescript 2 1 html partial readonl
  • 可变参数列表

    假设我有 2 个函数 void f1 int p1 int v1 AND void f2 int v1 在 f1 内部 我想将所有参数从可变参数列表传递到 f2 void f1 int p1 int v1 f2 pass all varia
  • 升级到 Spring Security 6 后角色层次结构不起作用

    我正在从 spring boot 2 7 x 升级到 3 0 0 按照官方文档中的建议进行更改后 我发现我的角色层次结构没有得到尊重 I added expressionHandler 到我的代码中建议的Spring Security 6
  • 如何在 R Markdown 中从第二页开始页码?

    我想知道是否有一种方法可以从第二页开始页码和 或从第二页开始打印页码R Markdown创建 pdf 输出时 当向文档添加标题页时 这会很有用 Thanks 收到有用的评论后 我通过添加解决了问题 pagenumbering gobble
  • 在 CakePHP 中使用媒体视图下载文件

    我想通过 4 个不同的链接下载 4 个不同的文件 我正在使用媒体视图下载文件 但我必须在控制器的下载功能中对文件名进行硬编码 function download this gt view Media params array id gt e
  • 通过外部站点登录 Moodle

    我正在设置一个 Moodle 环境 我需要用户能够使用其凭据通过外部站点登录that地点 理想情况下 他们会访问该网站 登录 然后单击一个按钮 将他们及其帐户信息发送到 Moodle 一旦他们到达 Moodle Moodle 将检查帐户信息
  • C++ STL 容器 ::clear ::swap

    清理 大型 STL 容器的最快方法是什么 在我的应用程序中 我需要处理大尺寸std map 例如 10000 个元素 我测试了以下3种方法来清除std map 每次需要时创建一个新容器 Calling map clear method Ca
  • 使 optgroup 标签在下拉列表中选择

    我计划为主要车型 瑞典汽车 提供一个简短的描述页面 我还想表明沃尔沃和萨博在下拉列表中位于瑞典汽车下方 然后 当我单击沃尔沃时 它应该导航到沃尔沃描述页面 如何显示最初选择的 optgroup 标签 谢谢
  • Windows:如何使用带路径的主机文件?

    这有效 127 0 0 1 www somesite com 但不是这个 127 0 0 1 somepath www www mysite com 我究竟做错了什么 是否可以绘制这样的完整路径 如果没有 完成我想做的事情的最简单方法是什么
  • 为 Android 部署 Phonegap / Cordova 应用程序?

    我正在 Android 上测试 Phonegap Cordova 3 0 应用程序 从 2 x 版本开始 Cordova 严重依赖命令行终端 我已经完成了所有设置 可以构建应用程序了 但有两件事困扰着我 首先 一个Android项目有两个w
  • 敲除剑道问题通过计算的可观察值进行绑定

    我尝试使用knockout kendo js 在knockout forEach 模板中声明kendo dropdownlist 控件 以便当新项目添加到knockout 可观察数组时 新的kendo dropdownlist 会在UI 中
  • C++ 中的函数与变量声明

    这段代码的工作原理 std ifstream f mapFilename c str std string s std string std istreambuf iterator
  • sf 对象的大小图例不会显示正确的符号

    有谁知道为什么传说size审美的BIR74不会显示点大小而是矩形 如果答案是肯定的 我该如何解决这个问题 可重现的例子 library sf devtools install github tidyverse ggplot2 library
  • 为什么这个不能是本地的?

    这是我正在运行的设置的虚拟变体 Launcher函数好像没有看到GetLevel 至少可以看到第一个印刷品 但看不到第二个印刷品 所以该函数永远不会启动 这是因为代码出现在代码中启动它的位置之后 而在启动器执行时它还不存在吗 当我删除本地标
  • FluentValidation 检查子集合中的重复实体

    我有一个MainEntity类 它有一个集合SubEntity 目前的验证情况如下 public class MainEntityValidator AbstractValidator
  • git-tf 无法找到所需的 JAR

    我正在尝试在我的 Windows 工作站上设置 git tf 桥 当我尝试执行其中一个命令时 它总是显示消息 无法找到所需的 JAR C my path to git tf lib com microsoft gittf client cl
  • 如何从 Gemfile.lock 文件安装 gem?

    我正在尝试运行一个从 Github 上取下的应用程序 我跑了bundle install从以下位置安装所需的 gemGemfile 然而 当运行应用程序时 一条错误消息告诉我安装的 gems 版本错误 关于检查Gemfile lock我注意
  • 使用 Objective C 读取发布到设备控制台的日志消息

    我的 iOS 应用程序如何从设备控制台日志中读取消息 我想以编程方式读取这些日志条目 例如读取文件 选择一些日志条目 然后通过电子邮件将其发送给支持人员 我知道有一款 iPhone 应用程序可以让您查看日志 它的名字是控制台 但是 我无法弄