[PHP-users 32695] Re: syslog関数

KOYAMA Tetsuji koyama @ hoge.org
2007年 10月 2日 (火) 21:38:52 JST


小山です。

On 10/1/07, Shigeru Matsumoto <hxcsn326 @ ybb.ne.jp> wrote:
>
> OS:CentOS4.4
> PHP:4.4.7
> MySQL:4.1.22
> MySQLのcharsetはeucです。
> Apache:1.3.37
> で開発を行っています。
>
> (xxx.php) -- euc
>
> syslog(3, "123"); ---> /var/log/messagesに"123"が書き込みされる
> syslog(3, "ああああ"); ---> /var/log/messagesに空白が書き込みされる
> 「ああああ」が表示されない。
>
> /var/log/messagesの文字コードはUTF-8みたいなので、
>
> mb_convert_encoding("ああああ", "UTF-8", "auto");
> (php.ini)
> mbstring.internal_encoding = UTF-8
> とかも試しましたが同じです。
>
> 今の環境で/var/log/messagesに日本語を書き込む方法を
> 教えて頂けないでしょうか?

手元の Fedora Core 6 で試してみましたが、特に何も変なことはおきずに
syslog() に渡した文字列が文字コードも含めてそのまま
 /var/log/messages に書き込まれましたよ?

EUC-JP でファイルを作って

<?php
openlog(false, LOG_ODELAY, LOG_LOCAL0);
$msg = 'ERR: 日本語だよん';
syslog(LOG_ERR, $msg);
?>

だと /var/log/messages には EUC-JP で

Oct  2 21:25:56 machinename :ERR: 日本語だよん

とでますし、

<?php
openlog(false, LOG_ODELAY, LOG_LOCAL0);
$msg = 'ERR: 日本語だよん';
mb_convert_variables('UTF-8', 'EUC-JP', $msg);
syslog(LOG_ERR, $msg);
?>

だと、ちゃんと UTF-8 で書き込まれます。

書かれた /var/log/messages をどんなツールで確認しましたか?
lv などの多言語ページャで見るとどうなりますか?

-- 
    小山哲志@ビート・クラフト
    koyama @ beatcraft.com
    koyama @ hoge.org


PHP-users メーリングリストの案内