我正在尝试在我的OS X应用程序中创建一个控制台窗口,它基本上显示存储在〜/ Library / Application Support / CocosBuilder / cocosbuilder.log中的应用程序日志文件的内容
我从我的应用程序中重定向了所有NSLog语句:
+ (void)redirectNSLogToDocumentFolder
{
NSString *logFilePath = [self logfilePath];
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
}
然后我在文件夹中注意修改:
- (void)subscribeFileSystemChanges
{
NSString* _pathToObserve = [ConsoleWindow logfileDir];
NSArray * pathArray = [NSArray arrayWithObject:_pathToObserve];
// if already subscribed then unsubscribe
if (stream)
{
FSEventStreamStop(stream);
FSEventStreamInvalidate(stream);
FSEventStreamRelease(stream);
}
FSEventStreamContext context;
context.info = (__bridge void *)self;
context.version = 0;
context.retain = NULL;
context.release = NULL;
context.copyDescription = NULL;
stream = FSEventStreamCreate(kCFAllocatorDefault,
(FSEventStreamCallback)refreshConsoleTextView,
&context,
(__bridge CFArrayRef)pathArray,
kFSEventStreamEventIdSinceNow,
1.0,
kFSEventStreamCreateFlagWatchRoot);
FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(),
kCFRunLoopDefaultMode);
FSEventStreamStart(stream);
}
当我从终端向我的日志文件添加内容时调用了我的回调方法refreshConsoleTextView:
echo "toto" >> cocosbuilder.log
但是当我自己的应用程序向他们的日志文件写入内容时(我的NSLog重定向),它没有被调用。 我没有使用标志kFSEventStreamCreateFlagIgnoreSelf
你有什么想法吗?