使用 CocoaLumberjack 手动创建新的日志文件
Manually create new log file with CocoaLumberjack
我已经像这样配置 CocoaLumberjack:
// CocoaLumberjack
DDLog.add(DDASLLogger.sharedInstance, with: DDLogLevel.debug)
DDLog.add(DDTTYLogger.sharedInstance, with: DDLogLevel.debug)
DDTTYLogger.sharedInstance.colorsEnabled = true
fileLogger = DDFileLogger.init()
fileLogger?.doNotReuseLogFiles = true // Always create a new log file when apps starts
fileLogger?.rollingFrequency = 86400 // 24 Hours
fileLogger?.maximumFileSize = 0 // Force log to only roll after 24 hours
fileLogger?.logFileManager.maximumNumberOfLogFiles = 1 // Keeps 1 log file plus active log file
DDLog.add(fileLogger!, with: DDLogLevel.debug)
在我的应用程序中,我希望有以下日志系统:
我的应用程序的入口点是登录视图控制器。我想在这里写日志条目,这样我就可以看看是否一切正常。如果用户正确登录,我想 roll/archive 该日志并为该用户创建一个新日志。在这个新日志中,我将保留在用户会话期间发生的错误。如果用户注销,我想再次 roll/archive 日志并创建一个新日志。在 rolling/archiving 日志之前,我总是将其发送到我的服务器,因此我可以将其从设备中删除。
我正在尝试 roll/archive 日志,但没有成功:
Server().sendUserLog(filePath: DDFileLogger().currentLogFileInfo.filePath, onSuccess: { // This function send the log to the server, if all goes good, I want to roll it.
print(">>>>>>>>>>>>>>>>>>>>> \(DDFileLogger().currentLogFileInfo.filePath)")
DDFileLogger().rollLogFile(withCompletion: {
print("Log rolled")
print(">>>>>>>>>>>>>>>>>>>>> \(DDFileLogger().currentLogFileInfo.filePath)")
})
}, onError: { (error) in
DDLogError("LoginVC - sendUserLog Error: \(error)")
})
滚动函数前和滚动函数后都打印相同的路径和文件名。所以我没有创建新的日志文件。
如何创建它?
问题是您正在使用 DDFileLogger()
创建新的 DDFileLogger
。您应该将 fileLogger 存储在某处并在同一实例上调用 rollLogFile。
像这样:
let fileLogger = DDFileLogger()
Server().sendUserLog(
filePath: fileLogger.currentLogFileInfo.filePath,
onSuccess: { // This function send the log to the server, if all goes good, I want to roll it.
print(">>>>>>>>>>>>>>>>>>>>> \(fileLogger.currentLogFileInfo.filePath)")
fileLogger.rollLogFile(withCompletion: {
print("Log rolled")
print(">>>>>>>>>>>>>>>>>>>>> \(fileLogger.currentLogFileInfo.filePath)")
})
},
onError: { (error) in
DDLogError("LoginVC - sendUserLog Error: \(error)")
})
我已经像这样配置 CocoaLumberjack:
// CocoaLumberjack
DDLog.add(DDASLLogger.sharedInstance, with: DDLogLevel.debug)
DDLog.add(DDTTYLogger.sharedInstance, with: DDLogLevel.debug)
DDTTYLogger.sharedInstance.colorsEnabled = true
fileLogger = DDFileLogger.init()
fileLogger?.doNotReuseLogFiles = true // Always create a new log file when apps starts
fileLogger?.rollingFrequency = 86400 // 24 Hours
fileLogger?.maximumFileSize = 0 // Force log to only roll after 24 hours
fileLogger?.logFileManager.maximumNumberOfLogFiles = 1 // Keeps 1 log file plus active log file
DDLog.add(fileLogger!, with: DDLogLevel.debug)
在我的应用程序中,我希望有以下日志系统:
我的应用程序的入口点是登录视图控制器。我想在这里写日志条目,这样我就可以看看是否一切正常。如果用户正确登录,我想 roll/archive 该日志并为该用户创建一个新日志。在这个新日志中,我将保留在用户会话期间发生的错误。如果用户注销,我想再次 roll/archive 日志并创建一个新日志。在 rolling/archiving 日志之前,我总是将其发送到我的服务器,因此我可以将其从设备中删除。
我正在尝试 roll/archive 日志,但没有成功:
Server().sendUserLog(filePath: DDFileLogger().currentLogFileInfo.filePath, onSuccess: { // This function send the log to the server, if all goes good, I want to roll it.
print(">>>>>>>>>>>>>>>>>>>>> \(DDFileLogger().currentLogFileInfo.filePath)")
DDFileLogger().rollLogFile(withCompletion: {
print("Log rolled")
print(">>>>>>>>>>>>>>>>>>>>> \(DDFileLogger().currentLogFileInfo.filePath)")
})
}, onError: { (error) in
DDLogError("LoginVC - sendUserLog Error: \(error)")
})
滚动函数前和滚动函数后都打印相同的路径和文件名。所以我没有创建新的日志文件。
如何创建它?
问题是您正在使用 DDFileLogger()
创建新的 DDFileLogger
。您应该将 fileLogger 存储在某处并在同一实例上调用 rollLogFile。
像这样:
let fileLogger = DDFileLogger()
Server().sendUserLog(
filePath: fileLogger.currentLogFileInfo.filePath,
onSuccess: { // This function send the log to the server, if all goes good, I want to roll it.
print(">>>>>>>>>>>>>>>>>>>>> \(fileLogger.currentLogFileInfo.filePath)")
fileLogger.rollLogFile(withCompletion: {
print("Log rolled")
print(">>>>>>>>>>>>>>>>>>>>> \(fileLogger.currentLogFileInfo.filePath)")
})
},
onError: { (error) in
DDLogError("LoginVC - sendUserLog Error: \(error)")
})