LoginSignup
9
11

More than 5 years have passed since last update.

Swift向けのシンプルなロギングライブラリを作った

Last updated at Posted at 2015-08-02

Swiftでログ周りのことを検索しても自前実装している人がたくさん出てくるだけで、
Javaのようにデファクトスタンダードになっているようなロギングライブラリやインターフェースが見つかりませんでした。

外も暑いし、外出したくないのでロガーだけSLF4J風のインターフェースを持ったライブラリを作ってみました。
本当は Logger は protocol にしたかったのですが、protocol で定義した関数はデフォルト引数を持てないという制約があるようで、
そうなるとロガーの利用側はいちいちファイル、行数、メソッド名などを表す __FILE__, __LINE__, __FUNCTION__ などを渡さなければならず、鬼のように面倒臭いです。
たとえばいちいちログ出力するのに以下のようなコードは書きたくないですよね?

// ダルすぎワロタ
logger.info("hogehoge", file: __FILE__, function: __FUNCTION__, line: __LINE__) 

// 本来はこう書きたい
logger.info("hogehoge")

そこで妥協してクラスにしてあげるという形をとりました。これにより以下のように使えるようになります。

let logger = LoggerFactory.getLogger(.INFO)
logger.info("logger test")  //=> output log
logger.trace("hoge")        //=> do nothing(loglevel = .INFO)

// 出力例
// 2015-08-02 16:59:31.482 xctest[74860:477566] [INFO] LoggerTest.swift:8 <testExample()> - logger test

ロガーとして最低限欲しかったログレベルによる、ログの吐き分け機能は実現できたのでとりあえず公開しました。
CocoaPodsから利用することができます。

  1. pod 'SL4Swift'
  2. pod install

開発リポジトリはこちらです。私自身はiOS開発の経験はまだ1ヶ月半程度しかないので、素人です。なにか問題がありましたらコメント or PRをいただけると幸いです。また、よさげなログまわりの知見があればコメントをいただければ幸いです。

9
11
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11