Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

わきゃ!

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, // 指定した数分だけログファイルを保持してくれる。それ以前のものは自動で削除。
));
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away