W systemie OSX 10.8 wyjście na standardowe wyjście i stderr nie kończy się już w Console.app. Chciałbym uzyskać dane wyjściowe w Console.app bez korzystania z NSLog, ponieważ potrzebuję obsługi kodu, który używa podstawowych instrukcji drukowania do drukowania informacji debugowania (zobacz https://bitbucket.org/ronaldoussoren/py2app/issue/77 dla niektórych informacji w tle).Użyj ASL, aby zalogować się do konsoli.app
Wynik NSLog kończy się logiem ASL (Log System Log) "jakoś", ponieważ możesz przeglądać te logline używając "syslog -C". Dlatego starałem dodanie tego kodu do mojego wniosku:
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);
To nieco działa: kiedy piszę wiersze do strumienia stdout te linie się przekształconej przez ASL: wyjście jest teraz poprzedzony zwykłego rejestrowania prefix:
Nov 20 13:46:14 Gondolin.local py2app[43722] <Info>: Hello world from py2app launcher
Plik logu nie kończy się jednak w magazynie danych ASL ani na pliku Console.app.
Czy ktoś wie, co robię źle?