高效APP之打印Log

来源:互联网 发布:单片机外部存储器 编辑:程序博客网 时间:2024/05/22 17:29

日志把我APP运行的一项非常有用的工具。

日志工具和统计工具也许存在着一些微妙的区别。统计工具可以认为是日志整理过得结果。任何被统计的对象都必须被日志记录。

然而,统计结果依赖于公开的主要数据,日志通过不同层次为追踪APP行为提供了详细信息。由于日志一般贯穿整个APP的生命周期,统计被添加到关注点的特定对话中。

统计信息被发送到服务器,然而日志是存在设备本地。

对于日志打印,我们接下来使用CocoaLumberjack,用CocoaPods 来管理。

Example 1. Podfile configuration for CocoaLumberjack

pod'CocoaLumberjack','~> 3.2.0'

CocoaLumberjack 是一个抑郁扩展的框架,她能够满足将信息发送到不同的目标设备中。比如,使用DDASLLogger 日志会被记录在苹果系统日志里,使用DDFileLogger 将日志存储在本地。在APP启动的时候,可以配置不同的输出目标对象。

DDLog 宏被用于打印一个特定的层次。层次越高,信息也重要。最高层是错误层(Error),最低层是可视层(Verbose)。哪种信息被打印可以通过设置最低层次(minimum level)来配置

层次宏:DDLogError: 指不可恢复的错误DDLogWarn: 指可恢复的错误DDLogInfo: 指没有错误的信息DDLogDebug: 通常是与调试相关的信息DDLogVerbose: 提供绝大部分细节,主要用于跟踪控制执行流

Example 2. Configuring and using CocoaLumberjack

//Using logger in some file#if WFDEBUGstatic const DDLogLevel ddLogLevel = DDLogLevelVerbose;#elif WFRELEASEstatic const DDLogLevel ddLogLevel = DDLogLevelDebug;#elsestatic const DDLogLevel ddLogLevel = DDLogLevelWarn;#endif//Setup-(void)setupLogger {    [DDLog addLogger:[DDASLLogger sharedInstance]]; // TTY = Xcode console#if WFDEBUG    [DDLog addLogger:[DDASLLogger sharedInstance]]; // ASL = Apple System Logs#endif    DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger    fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling    fileLogger.logFileManager.maximumNumberOfLogFiles = 7;    [DDLog addLogger:fileLogger];}-(void)someMethod {    DDLogVerbose(@"someMethod has started execution");    DDLogError(@"Ouch! Error state. Don't know what to do");    DDLogVerbose(@"someMethod has reached its end state");}

1 通常在application:didFinishLaunchingWi thOptions:. 里调用此方法

2 当连到xcode ,只有在debug模式才会输出到系统日志里

文档日志,配置成24小时最大7个文件。

注册Logger

配置Log Level.

输入log

AppDelegate 完整的例子:

#import "AppDelegate.h"#import <CocoaLumberjack/CocoaLumberjack.h>#import <CocoaLumberjack/DDTTYLogger.h>@interface AppDelegate ()@end//Using logger in some file#if WFDEBUGstatic const DDLogLevel ddLogLevel = DDLogLevelVerbose;#elif WFRELEASEstatic const DDLogLevel ddLogLevel = DDLogLevelDebug;#elsestatic const DDLogLevel ddLogLevel = DDLogLevelWarn;#endif@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    [self setupLogger]; // setup logger    [self someMethod]; // logger in file    return YES;}//Setup-(void)setupLogger {    [DDLog addLogger:[DDASLLogger sharedInstance]]; // TTY = Xcode console#if WFDEBUG    [DDLog addLogger:[DDASLLogger sharedInstance]]; // ASL = Apple System Logs#endif    DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger    fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling    fileLogger.logFileManager.maximumNumberOfLogFiles = 7;    [DDLog addLogger:fileLogger];}-(void)someMethod {    DDLogVerbose(@"someMethod has started execution");    DDLogError(@"Ouch! Error state. Don't know what to do");    DDLogVerbose(@"someMethod has reached its end state");}@end

如果设置时遇到这样的情况
错误情况
记着设置 解决方法

原创粉丝点击