log4phpをダウンロード
http://www.vxr.it/log4php/download.html
log4phpを配置
[cakeインストールディレクトリ]/vendors/log4php/
cake_log.phpを編集
if (!class_exists('File')) {
require LIBS . 'file.php';
}
if (!defined('LOG_WARNING')) {
define('LOG_WARNING', 3);
}
if (!defined('LOG_NOTICE')) {
define('LOG_NOTICE', 4);
}
if (!defined('LOG_DEBUG')) {
define('LOG_DEBUG', 5);
}
if (!defined('LOG_INFO')) {
define('LOG_INFO', 6);
}
define('LOG4PHP_CONFIGURATION', ROOT . DS . APP_DIR . DS .'config' .DS .'log4php.properties');
require_once(VENDORS.'log4php/LoggerManager.php');
class CakeLog {
function CakeLog() {
$args = func_get_args();
if (method_exists($this, '__destruct')) {
register_shutdown_function (array(&$this, '__destruct'));
}
}
function __destruct() {
LoggerManager::shutdown();
}
function write($type, $msg) {
if (!defined('LOG_ERROR')) {
define('LOG_ERROR', 2);
}
if (!defined('LOG_ERR')) {
define('LOG_ERR', LOG_ERROR);
}
$levels = array(
LOG_WARNING => 'warning',
LOG_NOTICE => 'notice',
LOG_INFO => 'info',
LOG_DEBUG => 'debug',
LOG_ERR => 'error',
LOG_ERROR => 'error'
);
if (is_int($type) && isset($levels[$type])) {
$type = $levels[$type];
}
$logger =& LoggerManager::getLogger(basename($_SERVER['SCRIPT_NAME']));
$output = $msg;
switch ($type) {
case 'debug':
$logger->debug($output);
break;
case 'info':
$logger->info($output);
break;
case 'warning':
$logger->warn($output);
break;
case 'error':
$logger->error($output);
break;
}
return true;
}
}
?>
log4php.propertiesを作成
[cakeインストールディレクトリ]/app/config/log4php.properties
log4php.rootLogger=DEBUG, APP
log4php.appender.APP=LoggerAppenderDailyFile
log4php.appender.APP.file=/home/mmm/log/web/sample_log_%s.log
log4php.appender.APP.layout=LoggerPatternLayout
log4php.appender.APP.layout.ConversionPattern=%d %5p - %m%n
注意点
LoggerAppenderDailyFile って日付でローテートしてくれるのかと思ったら日付付きのログファイルにログ出力するだけでした。
ホントにローテートさせたいのであれば、Appenderを自作するかlogrotateとか使うってなる感じです。
0 コメント:
コメントを投稿