CocoaLumberjack - 通过继承LogFileManager来更改日志文件名

问题描述 投票:0回答:1

我正在尝试更改日志文件名称。到目前为止我发现的是this

我的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];

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

架构x86_64的未定义符号: “_OBJC_CLASS _ $ _ LogFileManager”,引自:Logger.o中的objc-class-ref:ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我到底错过了什么? CocoaLumberjack是通过Carthage 3.2.0为Xcode 8添加的。我已经将CocoaLumberjack.framework添加到Build Phases,就像/usr/local/bin/carthage copy-frameworks项目中的所有其他框架一样

objective-c xcode8 carthage lumberjack
1个回答
0
投票

好的,我解决了。这个错误非常令人困惑,但与任何事情无关。对不起。

这是一个包含大量构建目标和大量编译标志的大项目,它会使不同的事情发出警告并且警告会成为错误。在这种情况下,我添加了标志来禁用所提到的Logger.m类的全局标记。但我只是将这些反旗帜添加到一个目标而忘记将它们添加到另一个目标。这就是为什么它没有建立。

还奇怪的是,编译器并没有简单地说:无法在文件B中构建目标A或编译错误。相反,我得到了一个错误的架构消息,这完全误导了我......很抱歉这个麻烦。固定它。

© www.soinside.com 2019 - 2024. All rights reserved.