我正在尝试更改日志文件名。到目前为止我发现的是这个。
我的 DDLogFileManagerDefault 子类如下所示:
日志文件管理器.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
日志文件管理器.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
像项目中的所有其他框架一样将/usr/local/bin/carthage copy-frameworks