【发布时间】:2018-05-28 06:50:26
【问题描述】:
我正在尝试更改日志文件名。到目前为止我发现的是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];
当我用 DDLogFileManagerDefault 替换 LogFileManager 时,它工作正常。否则我会得到:
架构 x86_64 的未定义符号:
“_OBJC_CLASS_$_LogFileManager”,引用自: Logger.o ld 中的 objc-class-ref:找不到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)
我到底错过了什么?
CocoaLumberjack 是通过 Carthage 3.2.0 为 Xcode 8 添加的。
我已经将CocoaLumberjack.framework 添加到构建阶段,就像项目中的所有其他框架一样,/usr/local/bin/carthage copy-frameworks
【问题讨论】:
-
Logger是什么? -
Logger 是启动一切的类。 “这就是我使用它的方式”是 Logger.m 的一部分。
标签: objective-c xcode8 carthage cocoalumberjack