LoginSignup
1
1

More than 5 years have passed since last update.

【サルが書く】cakephp2でログローテーションを簡単に行う方法

Last updated at Posted at 2018-04-23

わきゃ!

cakephp2でログローテーションを簡単にする方法

アプリケーションにおいて、時系列でなにが起きているかを把握するのがログです。
しかし、ログファイルを一つにまとめて管理をしてしまうと、あとで分析する時に「ファイルがおもすぎてひらけない!」なんてことになりかねません。
そのために、ログローテーションを行うことで、ログファイルの整理整頓を行いましょう。

app/Config/bootstrap.php
// デフォルト設定
/**
 * Configures default file logging options
 */
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
    'engine' => 'File',
    'types'  => array('notice', 'info', 'debug'),
    'file'   => 'debug',
));
CakeLog::config('error', array(
    'engine' => 'File',
    'types'  => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'file'   => 'error',
));

日にちごとにログローテーションを行う

ログローテーションの定石としては日付ごとにログを分割する方法があります。

app/Config/bootstrap.php

/**
 * Configures default file logging options
 */
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
    'engine' => 'FileLog',
    'types' => array('notice', 'info', 'debug'),
    'file' => date('Ymd') . '_' . 'debug',
));
CakeLog::config('error', array(
    'engine' => 'FileLog',
    'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'file' => date('Ymd') . '_' . 'error',
));

date()を使用することで、ファイル名にログを書き出した日付を付与してくれます。

cakephp2.4以降ではオプションが追加されました

・size
基本的なログファイルのローテーション実装に使われます。 指定したサイズにログファイルのサイズが達した場合、現在のファイルが、 タイムスタンプをつけたファイル名に変更され、新しいログファイルが作成されます。 整数バイト値か、 『10MB』、『100KB』 など人が読みやすい文字列が使えます。 デフォルトは 10MB です。 size に false をセットすると、 下記の rotate オプションが無効になります。
・rotate
ログファイルは、削除される前に指定した回数ローテーションします。 もし、値が 0 の場合、古いファイルはローテーションする前に削除されます。デフォルトは 10。
・mask
新規作成されるファイルのパーミッションをセットします。もし、空のままの場合、 デフォルトのパーミッションが使用されます。

https://book.cakephp.org/2.0/ja/core-libraries/logging.html

app/Config/bootstrap.php

/**
 * Configures default file logging options
 */
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
    'engine' => 'FileLog',
    'types' => array('notice', 'info', 'debug'),
    'file' => 'debug',
    'size' => '7MB', // 指定したファイルサイズでログファイルを分割してくれる
    'rotate' => 7, // 指定した数分だけログファイルを保持してくれる。それ以前のものは自動で削除。
));
CakeLog::config('error', array(
    'engine' => 'FileLog',
    'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'file' => 'error',
    'size' => '7MB', // 指定したファイルサイズでログファイルを分割してくれる
    'rotate' => 7, // 指定した数分だけログファイルを保持してくれる。それ以前のものは自動で削除。
));
1
1
0

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
1
1