Журнал Cocoalumberjack в один файл

Я разрабатываю 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
    }
}

1 ответ

Решение

Обходной путь - отключить частоту прокрутки, не назначать максимальный размер или частоту вращения и не проверять размер с помощью 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)
Другие вопросы по тегам