【问题标题】:cocoalumberjack log to one filecocoalumberjack 日志到一个文件
【发布时间】:2021-06-13 17:08:01
【问题描述】:

我正在该应用程序中开发 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
    }
}

【问题讨论】:

    标签: cocoa logging cocoalumberjack


    【解决方案1】:

    解决方法是禁用滚动频率,不要分配最大大小或 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2011-07-04
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多