プロが教える店舗&オフィスのセキュリティ対策術

以下の様なスクリプトでsyslogを出力したいのですが、出力することができません。どなたかご教授ください。

環境は
vine2.6r4
perl5.6.1

で、/etc/syslog.confにlocal4.* /var/log/hoge.logを追加後、syslogdを再起動しました。
プログラムを実行するとhoge.logファイルは出力されます。
また、logger -p local4.err messageでhoge.logにmessageが出力されることも確認済みです。


-------------
#!/usr/bin/perl -w
use strict;
use Sys::Syslog qw(:DEFAULT setlogsock);

# 実行ファイル名の取得
my ($prog_name) = $0;
$prog_name =~ s/(.*)\/(.*)/$2/;

# Sys::Syslogモジュールの引数
my($ident, $logopt, $facility);
my($ident) = $prog_name;
my($logopt) = 'ndelay';
my($facility) = 'local4';

# 処理開始
&put_syslog("info", "process start.");

sub put_syslog {
my($priority, $msg) = @_;
openlog($ident, $logopt, $facility) || die "put_syslog: can't open syslog\n";
syslog($priority, $msg);
closelog();
}

A 回答 (1件)

setlogsock( 'unix' );


openlog($ident, $logopt, $facility);

――のように、openlogする前に、UNIX domainで通信するように設定してみては。
    • good
    • 0

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