大佬教程收集整理的这篇文章主要介绍了使用ASL登录console.app,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
NSLog输出以“某种方式”在ASL(Apple系统日志)日志中结束,因为您可以使用“syslog -C”查看这些日志.这就是我尝试将此代码添加到我的应用程序的原因:
aslclient c = asl_open("py2app","com.apple.console",ASL_OPT_NO_DELAY); int fd = dup(2); asl_set_filter(c,ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG)); asl_add_log_file(c,fd); asl_log(c,NULL,ASL_LEVEL_INFO,"Hello world from py2app launcher"); asl_log_descriptor(c,1,ASL_LOG_DESCRIPTOR_WRITE); asl_log_descriptor(c,2,ASL_LOG_DESCRIPTOR_WRITE);
这有点工作:当我向stdout流写行时,这些行由ASL转换:输出现在以通常的日志记录前缀作为前缀:
Nov 20 13:46:14 Gondolin.local py2app[43722] <Info>: Hello world from py2app launcher
但是,日志文件不会在ASL数据存储区或Console.app中结束.
有谁知道我做错了什么?
#include <asl.h> #include <unistd.h> #include <stdio.h> static void setup_logging(void) { aslmsg msg; aslclient c = asl_open("py2app",0); msg = asl_new(ASL_TYPE_MSG); asl_set(msg,ASL_KEY_FACILITY,"com.apple.console"); asl_set(msg,ASL_KEY_LEVEL,ASL_StriNG_NOTICE); asl_set(msg,ASL_KEY_READ_UID,"-1"); int fd = dup(2); //asl_set_filter(c,ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG)); asl_add_log_file(c,fd); asl_log(c,"Hello world from py2app launcher"); asl_log_descriptor(c,msg,ASL_LOG_DESCRIPTOR_WRITE); asl_log_descriptor(c,ASL_LOG_DESCRIPTOR_WRITE); } int main(void) { setup_logging(); printf("Hello world,this is a printf\n"); }
与我的第一次尝试相比,它包含一个更改:它使用asl_log_descriptor的“aslmsg”参数显式设置ASL Facility,Level和ReadUID.如果没有这些参数,消息将不会在Console.app中结束.特别需要ReadUID,以便能够在没有超级用户权限的情况下读取日志条目.
注意:要轻松测试,可以使用“syslog -C | tail”来读取控制台日志.没有ReadUID,当我使用“sudo syslog -C”时,我的程序输出才可见.
以上是大佬教程为你收集整理的使用ASL登录console.app全部内容,希望文章能够帮你解决使用ASL登录console.app所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。