Cocoalumberjack-通过子类logFileManager更改日志文件名



我正在尝试更改logfile名称。到目前为止,我发现的是。

我的ddlogfilemanagerdefault的子类看起来像这样:

logfilemanager.h

@import CocoaLumberjack;
// this import would work as well
// #import <CocoaLumberjack/CocoaLumberjack.h> 
// but none of these
//#import "DDLog.h"
//#import "DDTTYLogger.h"
//#import "DDASLLogger.h"
//#import "DDFileLogger.h"
@interface LogFileManager : DDLogFileManagerDefault
@end

logfilemanager.m

#import "LogFileManager.h"
@implementation LogFileManager
- (NSString *)newLogFileName {
    NSBundle *bundle = [NSBundle mainBundle];
    NSDictionary *info = [bundle infoDictionary];
    NSString *appName = [info objectForKey:@"CFBundleExecutable"];
    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

这就是我的使用方式:

DDLogFileManagerDefault *documentsFileManager = [[LogFileManager alloc] init];    
DDFileLogger *fileLogger = [[DDFileLogger alloc] initWithLogFileManager:documentsFileManager];

当我用DDLogFileManagerDefault替换LogFileManager时,它可以正常工作。否则我会得到:

架构的未定义符号x86_64:
" _objc_class _ $ _ logfilemanager",从: logger.o ld中的objc-class-ref:符号(s)为体系结构x86_64 clang:错误:链接器命令失败,出口代码失败 1(使用-v查看调用)

我到底在这里想念什么?Cocoalumberjack通过迦太基3.2.0添加Xcode 8。我已经在项目中使用/usr/local/bin/carthage copy-frameworks

的所有其他框架添加了CocoaLumberjack.framework

好吧,我解决了它。这个错误非常令人困惑,但与任何事情无关。抱歉。

这是一个大型项目,具有许多构建目标和许多编译标志,这些标志使不同的事物发出警告和警告成为错误。在这种情况下,我添加了标志,将全局标志禁用到上述logger.m类中。但是我只添加了一个抗斑点,然后忘了将它们添加到另一个目标中。这就是为什么它没有构建。

仍然很奇怪,编译器并不简单地说:无法在文件B中构建目标或编译错误。相反,我收到了一个丢失的架构消息,这完全使我误导了我……很抱歉麻烦。修复了它。

最新更新