Logの送信をやさしくしてくれるPuree
- logを収集するもので下記の機能をもつオープンソース。
- filter: ログに共通パラメーターを追加する
- buffer: バッファに入れる
- patch: 複数のログを1つにまとめて送る
- 現在はPuree-Swiftに移行されている模様。
- githubページ
インストール方法
pod "Puree"
使い方
-
filter, outputなどの動きを定義するクラスを作る
class ActivityFilter: PURFilter { override func logs(object: Any, tag: String, captured: String?) -> [PURLog] { let currentDate = logger.currentDate() return [PURLog(tag: "activity.tap", date: currentDate, userInfo: ["an event": object])] } } class ConsoleOutput: PUROutput { override func emit(log: PURLog) { // ここにLogを送るロジックを描く } }
-
configurationを生成してfilter, outputなどの設定を行う。loggerを生成する
let configuration = PURLoggerConfiguration.default() configuration.filterSettings = [ PURFilterSetting(filter: ActivityFilter.self, tagPattern: "activity.**"), // filter settings ... ] configuration.outputSettings = [ PUROutputSetting(output: ConsoleOutput.self, tagPattern: "activity.**"), PUROutputSetting(output: ConsoleOutput.self, tagPattern: "pv.**"), PUROutputSetting(output: LogServerOutput.self, tagPattern: "pv.**", settings:[PURBufferedOutputSettingsFlushIntervalKey: 10]), // output settings ... ] let logger = PURLogger(configuration: configuration)
-
postメソッドを使ってログを送信する
logger.post(["recipe_id": "123"], tag: "pv.recipe_detail")