Как перенаправить вывод nslog в файл вместо консоли

У меня есть приложение какао, работающее на OS X. Я использовал NSLog для отладки цели. Теперь я хочу перенаправить операторы журнала в файл вместо консоли.

Я использовал этот метод, но он заканчивается, входя в систему Консоль, а также в файле.

- (BOOL)redirectNSLog
{
    // Create log file
    [@"" writeToFile:@"/NSLog.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
    id fileHandle = [NSFileHandle fileHandleForWritingAtPath:@"/NSLog.txt"];
    if (!fileHandle)    return NSLog(@"Opening log failed"), NO;
    [fileHandle retain];

    // Redirect stderr
    int err = dup2([fileHandle fileDescriptor], STDERR_FILENO);
    if (!err)   return  NSLog(@"Couldn't redirect stderr"), NO;

    return  YES;
}

Действительно ли возможно не иметь оператор журнала в консоли, но только в файле??

17
задан Unicorn 6 July 2010 в 07:15
поделиться

1 ответ

NSLog сделан для записи в консоль. Вам нужно определить свою собственную функцию MyLog или любую другую, и заменить все вхождения NSLog на MyLog.

-8
ответ дан 30 November 2019 в 10:05
поделиться