Hatena::ブログ(Diary)

てつじんにっき

2007-05-24 PHP Windowsでのsyslog

[] Windowsでのsyslog

定数名LinuxWindows
LOG_EMERG01
LOG_ALERT11
LOG_CRIT21
LOG_ERR34
LOG_WARNING45
LOG_NOTICE56
LOG_INFO66
LOG_DEBUG76

defineされている値が違う。

Windowsではイベントログでsyslogエミュレートされる。

PHP マニュアル - syslog

<?php
syslog(LOG_EMERG, 'emerg');
syslog(LOG_ALERT, 'alert');
syslog(LOG_CRIT, 'crit');
syslog(LOG_ERR, 'err');
syslog(LOG_WARNING, 'warning');
syslog(LOG_NOTICE, 'notice');
syslog(LOG_INFO, 'info');
syslog(LOG_DEBUG, 'debug');
?>

とすると、[スタート]->[コントロールパネル]->[管理ツール]->[イベントビューア]のアプリケーションのログを見るとズラズラ記録されている。

f:id:Tetsujin:20070524012039j:image


PHPソ−スのwin32/wsyslog.cのvoid syslog(int priority, const char *message, ...)を見ると

switch (priority) {			/* translate UNIX type into NT type */
    case LOG_ALERT:
        etype = EVENTLOG_ERROR_TYPE;
        evid = PHP_SYSLOG_ERROR_TYPE;
        break;
    case LOG_INFO:
        etype = EVENTLOG_INFORMATION_TYPE;
        evid = PHP_SYSLOG_INFO_TYPE;
        break;
    default:
        etype = EVENTLOG_WARNING_TYPE;
        evid = PHP_SYSLOG_WARNING_TYPE;
}

Windowsのイベントログは「エラー」「警告」「情報」の3種類しかないっぽい。

priorityを弄っても「警告」として処理されるようである。

なぜこんなことを書いたかというと、昨日のエントリ Ethna CacheManager キャッシュが見つからないときとかを書いてて、昔、開発環境がオールWindowsだった時に、Ethnaで'log_level'=>'notice'としていたら、Ethna_Loggerはこの定数をログレベルのマスクに使用してるため、notice以上指定なのにdebug用のSQLがズラズラ記録されて、BoBpp氏と一緒に困ってたのを思い出したから。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Tetsujin/20070524/1179937715
Connection: close