在OSX 10.8輸出到stdout和stderr不再以Console.app結尾。我想在不使用NSLog的情況下在Console.app中獲取輸出,因爲我需要支持使用基本打印語句打印調試信息的代碼(有關某些背景信息,請參閱https://bitbucket.org/ronaldoussoren/py2app/issue/77)。使用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, NULL, ASL_LEVEL_INFO, 1, ASL_LOG_DESCRIPTOR_WRITE);
asl_log_descriptor(c, NULL, ASL_LEVEL_INFO, 2, ASL_LOG_DESCRIPTOR_WRITE);
這個有點工作原理:當我寫行到標準輸出流的那些行得到由ASL轉化:
:輸出現在由通常的日誌前綴前綴Nov 20 13:46:14 Gondolin.local py2app[43722] <Info>: Hello world from py2app launcher
儘管如此,日誌文件並不會在ASL數據存儲或Console.app中結束。
有誰知道我在做什麼錯?