Вывод NSLog в файл или функция внешнего журналирования для iOS - PullRequest
2 голосов
/ 06 декабря 2009

Я хочу иметь возможность записать содержимое N SLog в указанный мной файл, или мне нужна функция, которая записывает журнал в файл, например:

WriteLog(@"some activity by the user");
WriteLog(@"some more activity by the user");

но я хочу, чтобы вывод выглядел так:

12-25-2009 1:30:00PM some activity by the user
12-25-2009 1:35:00PM some more activity by the user

кто-нибудь знает, как я могу это сделать? Обратите внимание, что мне нужны дата и время в начале строки.

Кроме того, по какой-то причине freopen не будет записывать какие-либо данные в файл, он будет создавать файл, просто без вывода!

Ответы [ 2 ]

2 голосов
/ 06 декабря 2009

Я записал свой собственный журнал в класс файлов, но обнаружил, что в подавляющем большинстве случаев было проще просто скопировать содержимое консоли отладчика, вставить его в файл и использовать редактирование или сценарии для его обработки при необходимости. Это хорошо работает даже для очень больших свалок. Я даже сбрасывал таблицы таким образом. Это не элегантно, но гораздо быстрее и менее подвержено ошибкам, чем слияние с файлами.

2 голосов
/ 06 декабря 2009

Ну NSLog на самом деле не позволяет вам настраивать, куда идет его вывод, так что вам лучше развернуть свои собственные функции ведения журнала. Лично я бы использовал стиль log_fine, log_info и использовал бы что-то вроде метода writeToFile в NSString:

[log_string writeToFile:@"log.log" atomically:YES encoding:NSUTF8StringEncoding error:NULL];

Единственная проблема в том, что использование атомарного параметра может повлиять на производительность, поэтому это может быть лучшим решением:

NSFileHandle *output = [NSFileHandle fileHandleForWritingAtPath:"log.log"];
[output seekToEndOfFile];
[output writeData:[log_string dataUsingEncoding:NSUTF8StringEncoding]];

Что касается форматирования даты / времени, см. Класс NSDateFormatter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...