Skip to content

DancewithPeng/DPLog

Repository files navigation

DPLog

[TOC]

概述

Swift实现的非常轻量级的日志工具

导入

pod 'DPLog', '~> 3.0.0'

初始化

DPLog在使用前,需要先注册日志处理器,常规操作是在AppDelegate中指定日志处理器

import DPLog

// ...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    do {
        try DPLog.Collector.shared.register(
                DPLog.ConsoleHandler(
                    id: "DPLogExample.ConsoleHandler",
                    level: .verbose,
                    formatter: DPLog.PlainMessageFormatter()
                )
            )
    } catch {
        print(error)
    }
  
  	// ...

    return true
}

// ...

目前DPLog.Collector不支持ObjC的API,如果需要在ObjC项目中初始化,可以先建一个DPLogCoordinator.swift文件,然后键入一下内容

import Foundation
import DPLog

@objc
final class DPLogCoordinator: NSObject {
    
    @objc
    static func setup() {
        do {
            try DPLog.Collector.shared.register(
                    DPLog.ConsoleHandler(
                        id: "DPLogExample.ConsoleHandler",
                        level: .verbose,
                        formatter: DPLog.PlainMessageFormatter()
                    )
                )
        } catch {
            print(error)
        }
    }
}

然后在AppDelegate.m文件中通过ObjC的API调用[DPLogCoordinator setup]

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [DPLogCoordinator setup];    
    return YES;
}

在Swift环境中提供了两套API:ThrowingLogHandyLog,区别是ThrowingLog需要开发者自行处理异常。而HandyLog如果发生异常,则会在控制台打印异常,而不需要开发者处理。为了方便,建议开发者设置一个别名

typealias Log = HandyLog

设置后则使用Log.debug()的API进行日志采集

基本使用

可以直接输出字符串到日志

Log.debug("My Debug")
Log.info("My Info")
Log.warning("My Warning")
Log.error("My Error")

对应的ObjC语法

DPLogDebug(@"My Debug");
DPLogInfo(@"My Info");
DPLogWarning(@"My Warning");
DPLogError(@"My Error");

除了直接输出字符串到日志,DPLog还支持直接输出一个对象,此时会输出对象的description属性

let myError = NSError(domain: "dp.log.demo",
												code: 100001,
										userInfo: [NSLocalizedFailureReasonErrorKey: "Error Demo",
 																			NSLocalizedDescriptionKey: "Just a Demo"])
Log.error(myError)

对应的ObjC语法

NSError *myError = 
  	[NSError errorWithDomain:@"dp.log.demo"
												code:100001
										userInfo:@{NSLocalizedFailureReasonErrorKey: @"Error Demo",
																			NSLocalizedDescriptionKey: @"Just a Demo"}];
DPLogError(myError);

LICENSE

此项目采用MIT开源协议,点击查看详情