Начните с фреймворка Lumberjack: https://github.com/robbiehanson/CocoaLumberjack
Я хочу поместить некоторые операторы журнала в один файл, а некоторые в другой файл
Есть несколько способовдля достижения этой цели.Вот один пример: Добавьте 2 файловых регистратора:
fileLoggerA = [[DDFileLogger alloc] init];
fileLoggerB = [[DDFileLogger alloc] init];
[DDLog addLogger:fileLoggerA];
[DDLog addLogger:fileLoggerB];
Таким образом, на этом этапе все операторы журнала будут направлены как на fileLogger1, так и на fileLogger2.Далее мы собираемся добавить «фильтр» к каждому fileLogger, чтобы они игнорировали операторы журнала, не направленные на них.
Мы сделаем это, создав 2 различных макроса журналирования: ALog () & BLog ()
fileLoggerA будет записывать только лог-операторы из ALog ().fileLoggerB будет записывать только лог-операторы из BLog ().
Чтобы настроить это, мы можем воспользоваться «контекстом журналирования».Вы можете сделать что-то простое, например:
#define ALog(frmt, ...) SYNC_LOG_OBJC_MACRO(0, 0, 1, frmt, ##__VA_ARGS__)
#define BLog(frmt, ...) SYNC_LOG_OBJC_MACRO(0, 0, 2, frmt, ##__VA_ARGS__)
Очевидно, что вы можете продвинуться дальше, чем это (например, добавить поддержку уровней журнала и т. Д.). Но стоит отметить, что у ALog «контекст» равен 1и BLog имеет «контекст», равный 2.
Теперь вам просто нужно создать «пользовательский форматтер / фильтр».Вот пример:
- (NSString *)formatLogMessage:(DDLogMessage *)logMessage
{
if (logMessage->logContext == theContextIShouldLog)
return logMessage->logMsg;
else
return nil;
}
И, конечно, добавьте свой собственный форматер / фильтр для файловых регистраторов:
[fileLoggerA setLogFormatter:[MyContextFilter filterWith:1]];
[fileLoggerB setLogFormatter:[MyContextFilter filterWith:2]];
Более подробную информацию по этим темам можно найти в проекте Lumberjack.страницы:
https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels