カスタムタスクの作り方。
sfLogManager が rotate してくれないの続き。
カスタムタスクを作れば、
まず、タスクファイルを作成する。
タスクファイルは、
ファイル名は myPake*.php であれば何でもよい。
内容はこんな感じに。
symfony オリジナルの log-rotate の sfLogManager を myLogManager にしただけ。
myLogManager はの詳細はこちら。
オリジナルの log-rotate は、SF_SYMFONY_DATA_DIR/tasks/sfPakeMisc.php にあり。
これで、ログのローテーション問題は解決。
sfLogManager が rotate してくれないの続き。
カスタムタスクを作れば、
symfony my-log-rotateで、ログがローテーションできる。
まず、タスクファイルを作成する。
タスクファイルは、
[プロジェクトフォルダ]/data/tasks/myPakeMisc.phpとする。
ファイル名は myPake*.php であれば何でもよい。
内容はこんな感じに。
<?php
pake_desc('rotates an applications log files');
pake_task('my-log-rotate', 'app_exists');
function run_my_log_rotate($task, $args)
{
// handling two required arguments (application and environment)
if (count($args) < 2)
{
throw new Exception('You must provide the environment of the log to rotate');
}
$app = $args[0];
$env = $args[1];
// define constants
define('SF_ROOT_DIR', sfConfig::get('sf_root_dir'));
define('SF_APP', $app);
define('SF_ENVIRONMENT', $env);
define('SF_DEBUG', true);
// get configuration
require_once SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php';
myLogManager::rotate($app, $env, sfConfig::get('sf_logging_period'), sfConfig::get('sf_logging_history'), true);
}
symfony オリジナルの log-rotate の sfLogManager を myLogManager にしただけ。
myLogManager はの詳細はこちら。
オリジナルの log-rotate は、SF_SYMFONY_DATA_DIR/tasks/sfPakeMisc.php にあり。
symfonyで、タスクリストに my-log-rotate が表示されれば成功。
symfony my-log-rotate frontend prodなどで、myLogManager バージョンのタスクが実行される。
これで、ログのローテーション問題は解決。
コメントする