プロが教えるわが家の防犯対策術!

[環境]
・Solaris10
・perl 5.8.4
・Sys::Syslog 0.05

上記環境で文末に示すperlスクリプトからSys::Syslogモジュールを利用してsyslogを出力すると、

Mar 20 18:27:31 hostname <15>abc: this is syslog test

のように出力され、
・tagの前に<数字>が付いてしまう
・[ID xxxxxx facility.level]の表示がされない
という意図しない出力形式となってしまいます。

期待している出力形式は以下の通りです。

Mar 20 18:27:31 hostname abc: [ID 702911 user.debug] this is syslog test

IDとfacility.levelをスクリプトにより強制的に付加して表示する方法については、別の質問に回答がありましたが、tag の前の<番号>についてはどうにもできそうにありません。

因みに以下の環境では、意図した通りにsyslogが出力されます。
・Solaris8
・perl 5.6.1
・Sys::Syslog 0.18

同じような事象を経験し解決された方はおりますでしょうか?
宜しくお願いします。

-----------------------------------------------
#!/usr/local/bin/perl

use strict;
use warnings;
use Sys::Syslog;

openlog('abc', 'cons,pid', 'user');
syslog('debug', 'this is syslog test');
closelog();
-----------------------------------------------

A 回答 (1件)

デフォルトで socket type として何が設定されるか確認して下さい。


また、setlogsock で socket type を明示的に設定した場合、結果はどのようになるでしょうか?

当方以下の環境ですが、masa_0820 さんのスクリプトでは「tagの前に<数字>が付いてしまう」という現象は確認できませんでしたが、setlogsock('stream'); の一行を追加し、socket type を stream にすると同じ現象がおきました。

Solaris 10(x86) 8/07
perl 5.8.4 (/usr/perl5/5.8.4/bin/perl)

なお、私の環境では、Syslog.pm の中で @connectMethods は以下のようになっており、socket type はデフォルトで tcp -> udp -> unix -> stream -> console の順になっています。

/usr/perl5/5.8.4/lib/i86pc-solaris-64int/Sys/Syslog.pm
15 my @connectMethods = ( 'tcp', 'udp', 'unix', 'stream', 'console' );
    • good
    • 0
この回答へのお礼

xinuさん
ありがとうございます。回答を頂く前に、Sys::Syslog のバージョンを0.18に上げたところ、問題は発生しなくなりました。

ちなみに0.05の時のsocket typeは、xinuさんと同じでした。

お礼日時:2009/03/30 17:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!