xiaoyaoworm
xiaoyaoworm

Reputation: 1092

How to manually remove Cocoalumberjack log

I am using CocoaLumberjack V2.4 to save log into file.

This is the default code to set saving log into file:

    DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
    [DDLog addLogger:fileLogger];

Log is saved in default place: /AppData/Library/Caches/Logs/

I want implement an API to remove the saved log manually. I check they have Manually clear logs as the open issue there. Anyone has suggestion?

Upvotes: 3

Views: 1760

Answers (3)

Kimi Chiu
Kimi Chiu

Reputation: 2173

Try this one in Swift.

func clearLogs(){
    let logHelper = LogHelper(subsystem: "Logs", category: "Clear")

    logHelper.i("Clearing logs...")

    for logger in DDLog.allLoggers {
        if let fileLogger = logger as? DDFileLogger {
            fileLogger.rollLogFile{
                for path in fileLogger.logFileManager.sortedLogFilePaths {
                    let fileURL = URL(fileURLWithPath: path)

                    logHelper.i("\(fileURL)")
                    do {
                        try FileManager.default.removeItem(at: fileURL)
                        logHelper.i("Done!")
                    }
                    catch {
                        logHelper.e(error.localizedDescription)
                    }
                }
            }
        }
    }
}

Upvotes: 1

Abhishek
Abhishek

Reputation: 368

Swift Answer:

 fileLogger.rollLogFile(withCompletion: {
            for filename: String in self.fileLogger.logFileManager.sortedLogFilePaths {
                do {
                    try FileManager.default.removeItem(atPath: filename)
                } catch {
                    print(error.localizedDescription)
                }
            }
        })

Upvotes: 4

Chris Edgington
Chris Edgington

Reputation: 1467

This should work for you:

[fileLogger rollLogFileWithCompletionBlock: ^{
    for (NSString *filename in fileLogger.logFileManager.sortedLogFilePaths) {
    [[NSFileManager defaultManager] removeItemAtPath:filename error:nil];
    }
}];

Upvotes: 7

Related Questions