我正在尝试更改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中构建目标或编译错误。相反,我收到了一个丢失的架构消息,这完全使我误导了我……很抱歉麻烦。修复了它。