【问题标题】:DDLog doen't output logs to Console.appDDLog 不输出日志到 Console.app
【发布时间】:2014-04-03 22:50:33
【问题描述】:
我在应用程序 didFinishLaunchingWithOptions 中编写了以下代码
[DDLog addLogger:[DDTTYLogger sharedInstance]];
[[DDTTYLogger sharedInstance] setColorsEnabled:YES];
[DDLog addLogger:[DDASLLogger sharedInstance]];
但是,它不会将日志发送到 Console.app。
如何将其发送到控制台应用程序?
感谢您的帮助。
【问题讨论】:
标签:
ios
objective-c
cocoalumberjack
【解决方案1】:
你调用了下面的方法吗?
[DDLog addLogger:DDFileLogger_Object];
参见下面的代码示例
//For Apple's console
[DDLog addLogger:[DDASLLogger sharedInstance]];
//For terminal:
[DDLog addLogger:[DDTTYLogger sharedInstance]];
NSString* logsDirectory = [LoggerManager logsDirectory];
DDLogFileManagerDefault* logFileManager = [[DDLogFileManagerDefault alloc] initWithLogsDirectory:logsDirectory];
fileLogger = [[DDFileLogger alloc] initWithLogFileManager:logFileManager];
// Configure File Logger
[fileLogger setMaximumFileSize:MAX_FILES_SIZE];
[fileLogger setRollingFrequency:ROLLING_FREQUENCY];
[[fileLogger logFileManager] setMaximumNumberOfLogFiles:MAX_NUMBER_OF_FILES];
[DDLog addLogger:fileLogger];
【解决方案2】:
您似乎预计几天前会出现were fixed 的问题。这些修复将转到 1.8.2。
同时,您可以从github 获取最新版本,或者如果您使用的是 CocoaPods,请使用pod 'CocoaLumberjack', :head。
【解决方案3】:
对于部署目标 iOS 10.0,请确保您使用的是新的 DDOSLogger,如下所示:
[DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log
而不是 DDTTYLogger 或 DDASLLogger。
参考:https://github.com/CocoaLumberjack/CocoaLumberjack#how-to-get-started
Swift 用法
通常,您可以简单地import CocoaLumberjackSwift。如果您使用 CocoaPods 安装 CocoaLumberjack,则需要改用 import CocoaLumberjack。
DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
let fileLogger: DDFileLogger = DDFileLogger() // File Logger
fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
DDLog.add(fileLogger)
...
DDLogVerbose("Verbose")
DDLogDebug("Debug")
DDLogInfo("Info")
DDLogWarn("Warn")
DDLogError("Error")
Obj-C 用法
如果您使用 Lumberjack 作为框架,您可以@import CocoaLumberjack;。否则,#import <CocoaLumberjack/CocoaLumberjack.h>
[DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log
DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger
fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];
...
DDLogVerbose(@"Verbose");
DDLogDebug(@"Debug");
DDLogInfo(@"Info");
DDLogWarn(@"Warn");
DDLogError(@"Error");