如何在目标C中编写类似system.log的日志文件?

时间:2013-02-04 21:00:17

标签: objective-c cocoa

我希望我的Mac Os X沙盒应用程序能够写出每个操作所需的日志文件,我认为正确的路径是/Users/MyName/Library/Containers/com.me_developer.myAppID/Data/Library/Logs/ 。我知道如何写一个文件附加文本,但我要找的是以类似于系统日志文件的方式存档的旧日志文件写入/ var / log,一旦达到一定的大小,他们重命名和压缩(bz2)。我想知道Mac Os X或它的低级UNIX是否提供了内置的解决方案,因此我不必手动编写所有代码。感谢。

1 个答案:

答案 0 :(得分:5)

查看asl,这是用于与Mac OS X(和iOS)中的系统日志工具进行交互的API。它有点低级别,因为它是一个C API,但它应该做你想要的一切,并以苹果认可的,沙箱兼容的方式这样做。

ASL有许多第三方开源Objective-C包装器。以下是一些例子(我自己没有使用过这些例子):

https://github.com/AlanQuatermain/aqtoolkit/tree/master/ASLogger
https://github.com/billgarrison/SOLogger https://github.com/nloko/NLOSyslog

以下是一些关于使用ASL的文章/教程:

http://boredzo.org/blog/archives/2008-01-20/why-asl
http://www.cocoanetics.com/2011/03/accessing-the-ios-system-log/

最后,请务必查看Cocoa Lumberjack,这是一个非常受欢迎的Cocoa日志库。