iOS Cocoalumberjack: ThreadId и ProcessId не печатаются в File Logger, но печатаются в журналах консоли TTY

Я создал TestProject в Swift и добавил Cocoalumberjack с помощью CocoaPod. Инициализирован регистратор Cocoalumberjack для добавления журналов в консоль и в файл. Пожалуйста, найдите фрагмент кода инициализатора ниже.

    DDLog.add(DDTTYLogger.sharedInstance, with: DDLogLevel.verbose) // TTY = Xcode console

    let fileLogger: DDFileLogger = DDFileLogger() // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7
    DDLog.add(fileLogger)

Когда я напечатал тестовое сообщение, идентификатор потока и идентификатор процесса отсутствуют в журналах, добавленных в файл, но присутствующих в консоли.

DDLogDebug("Test message")

Журнал консоли: 2019-03-03 13:28:00:427 TestProject[81343:2525521] Тестовое сообщение

Журнал файлов: 03.03.2019 13:28:00:427 Тестовое сообщение

Мне нужно, чтобы идентификатор потока и идентификатор процесса (81343:2525521) также добавлялись в журналы файлов. Может ли кто-нибудь помочь мне исправить это?

Версия какапода: 1.5.3

Cocoalumberjack: CocoaLumberjack/Swift (3.4.2)


person Anand    schedule 03.03.2019    source источник


Ответы (1)


Вам нужен специальный формат для него. Здесь образец для threadID и отметки времени

class MyCustom: NSObject, DDLogFormatter { 
    func format(message logMessage: DDLogMessage) -> String? { 
       return "\(logMessage.threadID) - \(logMessage.timestamp)" 
    } 
}

Затем добавьте в свой файловый регистратор: fileLogger.logFormatter = MyCustom()

person donmichael    schedule 03.03.2019
comment
Спасибо @донмайкл. Я удалил уровень, как вы предложили. Но до сих пор проблема не решена. - person Anand; 03.03.2019
comment
Не могли бы вы показать код, как вы регистрируете thread id and process id - person donmichael; 04.03.2019
comment
Идентификатор потока и процесс регистрируются Cocoalumberjack. Это код для печати тестового сообщения. DDLogDebug (тестовое сообщение). Он печатает эти идентификаторы только в консоли, но не в файле. - person Anand; 04.03.2019
comment
Хорошо, теперь я понял. Вам нужен специальный формат для него. Вот образец для threadID и timestamp class MyCustom: NSObject, DDLogFormatter { func format(message logMessage: DDLogMessage) -> String? { return "\(logMessage.threadID) - \(logMessage.timestamp)" } } Затем добавьте в свой файловый регистратор: fileLogger.logFormatter = MyCustom() - person donmichael; 04.03.2019
comment
Кстати, здесь вы можете найти всю информацию, относящуюся к сообщению журнала: информация, относящаяся к сообщению журнала, включая: github.com/CocoaLumberjack/CocoaLumberjack/blob/master/ - person donmichael; 04.03.2019
comment
спасибо @donmicael. DDLogFormatter сделал волшебство. Я могу распечатать идентификатор потока в файловом журнале. Пожалуйста, опубликуйте свое решение в разделе ответов, а не в комментариях. - person Anand; 06.03.2019
comment
Приятно слышать этого приятеля. - person donmichael; 06.03.2019