[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:ThrowingLog、HandyLog,区别是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);
此项目采用MIT开源协议,点击查看详情