Reputation: 1092
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
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
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
Reputation: 1467
This should work for you:
[fileLogger rollLogFileWithCompletionBlock: ^{
for (NSString *filename in fileLogger.logFileManager.sortedLogFilePaths) {
[[NSFileManager defaultManager] removeItemAtPath:filename error:nil];
}
}];
Upvotes: 7