cocoalumberjack 记录到一个文件
cocoalumberjack log to one file
我正在开发 mac 应用程序,在该应用程序中我需要登录到文件夹,其中已经有一些其他应用程序也在登录,所以只需要在该文件夹中创建一个文件,当整个文件滚动发生时该日志文件夹中的内容正在删除。我正在使用此代码。我不想删除日志文件夹中的内容,是否可以仅使用具有常量名称的文件。请帮助我。
// Configure CocoaLumberjack
DDLog.addLogger(DDASLLogger.sharedInstance())
DDLog.addLogger(DDTTYLogger.sharedInstance())
// Initialize File Logger
let manager : BaseLogFileManager = BaseLogFileManager(logsDirectory:K.LogFileDir)
let fileLogger: DDFileLogger = DDFileLogger(logFileManager: manager) // File Logger
fileLogger.maximumFileSize = 1024*1024*20
fileLogger.doNotReuseLogFiles = false
fileLogger.logFileManager.maximumNumberOfLogFiles = 1
DDLog.addLogger(fileLogger)
class BaseLogFileManager : DDLogFileManagerDefault
{
override var newLogFileName: String! { get {
return K.LogFileName
}}
override func isLogFile(fileName: String!) -> Bool
{
return true
}
}
解决方法是禁用滚动频率,不分配最大大小或 rollingFrequency 并使用 NSFileManager 检查大小。如果文件大小大于特定限制,请删除并创建新文件。
// Configure CocoaLumberjack
DDLog.addLogger(DDASLLogger.sharedInstance())
DDLog.addLogger(DDTTYLogger.sharedInstance())
// Initialize File Logger
let manager : BaseLogFileManager = BaseLogFileManager(logsDirectory:K.LogFileDir)
let fileLogger: DDFileLogger = DDFileLogger(logFileManager: manager) // File Logger
do {
let attr : NSDictionary? = try NSFileManager.defaultManager().attributesOfItemAtPath(K.LogFileDir+"/"+K.LogFileName)
if let _attr = attr {
if _attr.fileSize() > 1024*1024*10
{
NSFileManager.defaultManager().createFileAtPath(K.LogFileDir+"/"+K.LogFileName, contents: NSData(), attributes: nil)
}
}
} catch {
print("Error: \(error)")
}
fileLogger.doNotReuseLogFiles = false
fileLogger.logFileManager.maximumNumberOfLogFiles = 1
DDLog.addLogger(fileLogger)
我正在开发 mac 应用程序,在该应用程序中我需要登录到文件夹,其中已经有一些其他应用程序也在登录,所以只需要在该文件夹中创建一个文件,当整个文件滚动发生时该日志文件夹中的内容正在删除。我正在使用此代码。我不想删除日志文件夹中的内容,是否可以仅使用具有常量名称的文件。请帮助我。
// Configure CocoaLumberjack DDLog.addLogger(DDASLLogger.sharedInstance()) DDLog.addLogger(DDTTYLogger.sharedInstance()) // Initialize File Logger let manager : BaseLogFileManager = BaseLogFileManager(logsDirectory:K.LogFileDir) let fileLogger: DDFileLogger = DDFileLogger(logFileManager: manager) // File Logger fileLogger.maximumFileSize = 1024*1024*20 fileLogger.doNotReuseLogFiles = false fileLogger.logFileManager.maximumNumberOfLogFiles = 1 DDLog.addLogger(fileLogger)
class BaseLogFileManager : DDLogFileManagerDefault
{
override var newLogFileName: String! { get {
return K.LogFileName
}}
override func isLogFile(fileName: String!) -> Bool
{
return true
}
}
解决方法是禁用滚动频率,不分配最大大小或 rollingFrequency 并使用 NSFileManager 检查大小。如果文件大小大于特定限制,请删除并创建新文件。
// Configure CocoaLumberjack
DDLog.addLogger(DDASLLogger.sharedInstance())
DDLog.addLogger(DDTTYLogger.sharedInstance())
// Initialize File Logger
let manager : BaseLogFileManager = BaseLogFileManager(logsDirectory:K.LogFileDir)
let fileLogger: DDFileLogger = DDFileLogger(logFileManager: manager) // File Logger
do {
let attr : NSDictionary? = try NSFileManager.defaultManager().attributesOfItemAtPath(K.LogFileDir+"/"+K.LogFileName)
if let _attr = attr {
if _attr.fileSize() > 1024*1024*10
{
NSFileManager.defaultManager().createFileAtPath(K.LogFileDir+"/"+K.LogFileName, contents: NSData(), attributes: nil)
}
}
} catch {
print("Error: \(error)")
}
fileLogger.doNotReuseLogFiles = false
fileLogger.logFileManager.maximumNumberOfLogFiles = 1
DDLog.addLogger(fileLogger)