PlainLogger
示例
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
要求
iOS 11.0 及以上。
安装
PlainLogger 通过 CocoaPods 提供使用。要安装它,只需在 Podfile 中添加以下行
pod 'PlainLogger'
使用方法
首先,导入 PlainLogger
import PlainLogger
配置
建议您在AppDelegate上配置PlainLogger。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let configuration = PlainLogger.Configuration(
// Enable or disable logger
enabled: true,
// Logging level (.verbose, .info, .error, .debug)
level: .verbose,
// Logging date format
dateFormat: "dd/MM/yyyy HH:mm",
// Enable indicators (emojis) for easy to read logging on console
indicatorsEnabled: true,
// Specify indicators for each logging level
indicatorScheme: PlainLogger.IndicatorScheme(),
// Specify console logging template
consoleLoggingTemplate: nil,
// Specify data store providers for logging
providers: [DefaultDiskDataStoreProvider()])
PlainLogger.configure(with: configuration)
return true
}
使用方法
PlainLogger.debug(tag: "Tag debug", message: "Log debug")
PlainLogger.error(message: "Log error")
PlainLogger.info(message: "Log info")
PlainLogger.verbose(message: "Log verbose")
高级配置
PlainLogger有更多配置项。
控制台日志模板
您可以按照以下方式组织由PlainLogger生成的控制台日志
// Default console logging template and its preview
let template = "#line_break# #logger_signature# #log_level# #date#" + // [📋 Log] [🔎 Error] [⏰ 01/02/2019 10:51]
"#line_break# #indicator# Tag: #tag#" + // 🔴 Tag: Test tag
"#line_break# #indicator# Message: #message#" + // 🔴 Message: Test error
"#line_break# #indicator# Function: #function#" + // 🔴 Function: viewDidLoad()
"#line_break# #indicator# File: #file#" + // 🔴 File: ViewController.swift
"#line_break# #indicator# Line: #line#, Column: #column#" // 🔴 Line: 19, Column: 18
// Configure logger with given template
let configuration = PlainLogger.Configuration(consoleLoggingTemplate: template)
PlainLogger.configure(with: configuration)
数据存储提供商
PlainLogger会在每次日志操作时在给定的提供商上触发store()方法。这可以通过以下方式配置
let configuration = PlainLogger.Configuration(providers: [DefaultDiskDataStoreProvider()])
PlainLogger.configure(with: configuration)
例如,提供了2种不同的数据存储提供商,即DefaultHttpDataStoreProvider(将日志POST到给定的API路径)和DefaultDiskDataStoreProvider(按用户默认值存储日志),但您可以实现自己的数据存储提供商,通过实现LogDataStoreProvider协议。
// LogDataStoreProvider protocol
public protocol LogDataStoreProvider {
func store(log: LogDataStoreModel)
// Data store providers identificaton
func identification() -> String
}
// Example implementation for LogDataStoreProvider
public class DefaultDiskDataStoreProvider: LogDataStoreProvider {
let userDefaults = UserDefaults.standard
let diskDataStoreKey = "LoggerDiskDataStoreKey"
public init() {}
public func store(log: LogDataStoreModel) {
if let logData = userDefaults.object(forKey: diskDataStoreKey) as? Data {
if var logs = try? NSKeyedUnarchiver.unarchivedObject(ofClasses: [LogDataStoreModel.self], from: logData) as? [LogDataStoreModel] {
logs?.append(log)
if let newData = try? NSKeyedArchiver.archivedData(withRootObject: logs as Any, requiringSecureCoding: false) {
userDefaults.set(newData, forKey: diskDataStoreKey)
}
}
} else {
if let newData = try? NSKeyedArchiver.archivedData(withRootObject: [log] as Any, requiringSecureCoding: false) {
userDefaults.set(newData, forKey: diskDataStoreKey)
}
}
}
public func identification() -> String {
return "DefaultDiskDataStoreProvider"
}
}
指示器方案
您可以通过IndicatorScheme对象配置指示器方案。
let scheme = PlainLogger.IndicatorScheme( debug: .normal, // 🙂
info: .blue, // 🔵
verbose: .white, // 💀
error: .red) // 🔴
let configuration = PlainLogger.Configuration(indicatorScheme: scheme)
PlainLogger.configure(with: configuration)
作者
Burak Akkaş
许可
PlainLogger 按照MIT许可协议提供。更多信息请参阅 LICENSE 文件。