Search code examples
iosswiftcocoalumberjack

iOS Cocoalumberjack: ThreadId and ProcessId not printed in File Logger but prints in TTY Console logs


I have created TestProject in Swift and added Cocoalumberjack using CocoaPod. Initialized Cocoalumberjack logger to add logs to console and file. Please find the initializer code snippet below.

    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)

When i printed test message, Thread id and process id is missing in logs added in file but present in console.

DDLogDebug("Test message")

Console log: 2019-03-03 13:28:00:427 TestProject[81343:2525521] Test message

File Log: 2019/03/03 13:28:00:427 Test message

I need thread id and process id (81343:2525521) also to be added in file logs. Could someone help me in fixing this?

Cocoapod version : 1.5.3

Cocoalumberjack: CocoaLumberjack/Swift (3.4.2)


Solution

  • You need a custom format for it. Here a sample for threadID and timestamp

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

    Then adding to your file logger: fileLogger.logFormatter = MyCustom()