[ ZendFramework1 ] application.ini にログの出力設定 ( Zend_Application_Resource_Log )

Pocket

ここでは、Zend_Application_Resource_Log リソースプラグインを使用してログを出力するサンプルを掲載しています。複数のライタを application.ini に設定して、一度に複数のログを出力することもできます。

スポンサーリンク

ログの出力設定 (application.ini)

以下は、ログファイルと syslog へログを出力する複数のライタを application.ini に設定するサンプルになります。

// 1.ファイルに出力する
resources.log.stream.writerName = "Stream"
// 出力先のディレクトリは事前に作成する必要がある
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/application.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 2

// 2.syslog に出力する
resources.log.syslog.writerName = "Syslog"
resources.log.syslog.writerParams.application = "application"

// windows の場合、writerParams.facility の設定は application.ini から削除すること(例外が出力された)
// なお、facility は LOG_USER 固定(windows)となり、イベントログに出力される
resources.log.syslog.writerParams.facility = LOG_USER
resources.log.syslog.filterName = "Priority"
resources.log.syslog.filterParams.priority = 4

// filterParams.priority = 4 は、Zend_Log::WARN と等価である

アクションコントローラ内でログを出力する

実際にアクションコントローラ内でログを出力するサンプルコードは次の通りです。

class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        $log = $this->getInvokeArg('bootstrap')->getResource('log');
        // または、以下のようにすることでも取得可能
        //$log = $this->getInvokeArg('bootstrap')->getPluginResource('log')->getLog();

        $log->log("output log priority Zend_Log::EMERG",  Zend_Log::EMERG);
        $log->log("output log priority Zend_Log::ALERT",  Zend_Log::ALERT);
        $log->log("output log priority Zend_Log::CRIT",   Zend_Log::CRIT);
        $log->log("output log priority Zend_Log::ERR",    Zend_Log::ERR);
        $log->log("output log priority Zend_Log::WARN",   Zend_Log::WARN);
        $log->log("output log priority Zend_Log::NOTICE", Zend_Log::NOTICE);
        $log->log("output log priority Zend_Log::INFO",   Zend_Log::INFO);
        $log->log("output log priority Zend_Log::DEBUG",  Zend_Log::DEBUG);
    }
    
    public function indexAction()
    {
        
    }
}

Windows 使用時の注意

Windows 上では syslog はイベントログに出力されるようになります。しかし、イベントログでは8段階のレベル分けは行えないないので、エラー、警告、情報の3段階に振り分けられます。

Zend_Log 優先度 イベントログ種類(windows)
Zend_Log::EMERG エラー
Zend_Log::ALERT エラー
Zend_Log::CRIT エラー
Zend_Log::ERR 警告
Zend_Log::WARN 警告
Zend_Log::NOTICE 情報
Zend_Log::INFO 情報
Zend_Log::DEBUG 情報

参考

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *