[CodeIgniter2.x]log4phpと連携してみた


CodeIgniterのロギング部分は最小限の機能しか提供されていないため、有名なlog4phpと連携させてみました。

今回は、log4phpのフル機能をサポートというわけではなく、最小限の機能だけに抑えました。log4phpの機能をフルに使いたければ、phpですし、CodeIgniterですし、直に使っちゃえばいいんじゃない?という風に考えています。

広告

ソースは下記のgithubにおいています。インストール方法などについても下記のページに書いていますので、そちらを参照してください。

fukata/ci-log4php – GitHub

今のところ出来ることと言えば、ルートロガーを使ってロギングすることくらいです。あと、前々からlog_message関数は入力しにくい上にロギングレベルを毎回指定しないといけないのは怠いと感じていたので、log4php_helper.phpとしていくつか簡易メソッドを追加しています。

一応、CodeIgniter 2系をターゲットに作りましたが、ci_log4phpの配置先とlog4php.propertiesファイルパスをENVIRONMENTを考慮した形に実装しているので、検証はしていませんが、その辺を変更すれば1系でも動くんじゃないかと思います。

CodeIgniterのlog_messageからでも呼び出し元情報を正常に取得できるように、log4php自体も少し修正しています。なので、直に使いたい場合には、ci_log4phpは使わずに別途公式から提供されているものを使ってください。

application/config/config.php内のlog_pathを利用していなかったりしますし、まだまだ連携していない部分も多々あります。可能であれば、log4phpの機能をフルに提供したいところではありますが、冒頭にも書いたとおりそんなにフルで使いたければ直に使っても良いのかなと思っているので迷っているところではあります。

また、近いうちに勉強がてらにこれをsparksのパッケージとして構築しようかと思っています。

追記:2011-06-18 22:49
sparksだと読み込みタイミングがCodeIgniterの初期化が終わった後なので、起動時のログを出力する時には利用できないので、今のところは諦めました。読み込みタイミングがシビアなものは数少ないでしょうから、そういうのはapplication配下に置いて、標準の拡張方法を適用する方が良さそうです。

関連記事