ios - CocoaLumberjack iOS - 我们可以更改日志文件名称和目录吗?

标签 ios iphone objective-c logging

我在我的项目中使用 CocoaLumberjack。我需要将日志文件的名称更改为我的自定义文件名。

NSString * applicationDocumentsDirectory = [[[[NSFileManager defaultManager]
                                              URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] path];
DDLogFileManagerDefault *documentsFileManager = [[DDLogFileManagerDefault alloc]
                                                 initWithLogsDirectory:applicationDocumentsDirectory];

DDFileLogger *fileLogger = [[DDFileLogger alloc]
                            initWithLogFileManager:documentsFileManager];    
// Configure File Logger
[fileLogger setMaximumFileSize:(1024 * 1024)];
[fileLogger setRollingFrequency:(3600.0 * 24.0)];
[[fileLogger logFileManager] setMaximumNumberOfLogFiles:1];
[DDLog addLogger:fileLogger];

通过上面的代码,我已经将目录更改为文档。但现在我还需要更改日志文件名。我怎样才能做到这一点?可能吗?

最佳答案

虽然我认为我的回复可能为时已晚,但请在下面找到我的解决方案:

1)继承DDLogFileManagerDefault并重写方法:newLogFileName和isLogFile

#import "DDFileLogger.h"

@interface BaseLogFileManager : DDLogFileManagerDefault

@end

#import "BaseLogFileManager.h"

@implementation BaseLogFileManager

-(NSString *)newLogFileName {
    NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"];
    NSString *timeStamp = [self getTimestamp];

    return [NSString stringWithFormat:@"%@%@.log", appName, timeStamp];
}

-(BOOL)isLogFile:(NSString *)fileName {
    return NO;
}

-(NSString *)getTimestamp {
    static dispatch_once_t onceToken;
    static NSDateFormatter *dateFormatter;
    dispatch_once(&onceToken, ^{
        dateFormatter = [NSDateFormatter new];
        [dateFormatter setDateFormat:@"YYYY.MM.dd-HH.mm.ss"];
    });

    return [dateFormatter stringFromDate:NSDate.date];
}

@end

2) 在 AppDelegate 中,更改以下行:

DDLogFileManagerDefault *documentsFileManager = [[DDLogFileManagerDefault alloc] initWithLogsDirectory:applicationDocumentsDirectory];

收件人:

DDLogFileManagerDefault *documentsFileManager = [[BaseLogFileManager alloc] initWithLogsDirectory:applicationDocumentsDirectory];

关于ios - CocoaLumberjack iOS - 我们可以更改日志文件名称和目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857508/

相关文章:

ios - Swift - 在动画中断/取消后查找 UIImageview 的大小?

objective-c - 快速扩展 objc ,初始值设定项

iphone - 应用程序设计 - iPhone 和 Cocoa 应用程序之间的区别?

ios - 如果蓝牙关闭 iOS,禁用警告对话框

objective-c - 正确使用将 float 转换为 int 来表示百分比吗?

javascript - 有什么办法可以去除IPHONE上的字幕黑底?

ios - 从服务器获取数据时如何显示事件指示器

ios - 避免在 ReactiveCocoa 上重复 http 请求

iphone - Obj-C "@interface"的类文件?

iphone - 当我第二次关注 Textview 时,文本在 textView 中向上移动