syslog出力について

このQ&Aのポイント
  • solarisでperlでsyslogに出力するとき、メッセージIDとプライオリティを出力することができません。
  • loggerコマンドでは、メッセージIDとプライオリティを含んだログが出力されますが、perlプログラムでは表示されません。
  • syslogに[ID 702911 user.info]を表示することはできないのでしょうか?
回答を見る
  • ベストアンサー

syslog出力について

solarisでperlでsyslogに出力するとき、メッセージIDとプライオリティを出力することができません。 loggerコマンドだと、 logger -p user.info -t UUU テストメッセージ を実行すると、syslogには、 Jan 7 18:37:25 HOST UUU: [ID 702911 user.info] テストメッセージ と出力されます。 しかし、次のperlプログラムを実行しても、 #!/bin/perl use Sys::Syslog qw(:DEFAULT setlogsock); setlogsock('inet'); openlog("UUU","cons",LOG_USER); syslog(LOG_INFO,"テストメッセージ"); closelog(); syslogには、 Jan 7 18:44:01 HOST UUU: テストメッセージ としか表示されません。 [ID 702911 user.info]を表示することはできないのでしょうか?

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

solaris の syslog って、少し変わった形式で出るのですね。 こんな形で自分で組み立ててはいかがでしょうか。 my $str = "テストメッセージ"; my ($msgid) = split /\s+/, `echo $str | msgid`, 2; syslog(LOG_INFO,"[ID $msgid user.info] $str");

kurigon
質問者

お礼

私も文字列を自分で作るしかないのかなあ、と思っていました。しかし、恥ずかしいながら、msgidコマンドを知りませんでした。ありがとうございました。

関連するQ&A

  • 再度 PHPのSYSLOG出力方法

    いつもお世話になっています。 昨日PHPでSYSLOGの出力方法について質問させて頂いたものです。 (1)ループ外でopenlog,closelog、ループ内でsyslogする (2)ループ内でopenlog,syslog,closelogをやる ひとつの処理で複数ファイルに出力する場合、 (2)の方法でいっぺんにまとめて出そうと思い、 openlog("goo_gn_syslogtest" ,LOG_CONS | LOG_NDELAY, LOG_LOCAL5); syslog(LOG_INFO, "test\ntest2"); closelog(); と$messageに改行コードを入れると、ログ内に test#012test2 と書かれていました。 設定で、$messageの後は改行がされる事になっています。 一行一行出力するsyslogに対してはまとめて出力する事は不可能なのでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • Sys::Syslogモジュールでsyslogを出力したい

    以下の様なスクリプトで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(); }

    • ベストアンサー
    • Perl
  • Sys::Syslogモジュールを利用したsyslog出力について

    [環境] ・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(); -----------------------------------------------

    • ベストアンサー
    • Perl
  • Perlからsyslog経由でログを出力したい

    皆さん、こんにちは。 Perlからsyslog経由でログを出力しようと考えています。 2点質問がありますのでご存知でしたらご教授ください。 (1)Perlスクリプトからsyslog経由でログ出力する方法 いろいろ方法は考えられるかと思いますが、 よく使われるエレガントな方法をご教授していただけるとありがたいです。 通常はやはりloggerを使うのでしょうか? (2)syslog経由で任意のファイルに出力する方法 syslogで、あるプログラムからのログにおいて、 このレベルはこのファイルという分け方はできますか? できなければ別の手段はありませんか? syslog-ngであればこのようなことができるのでしょうか? もしできれば方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • loggerコマンドでkern.warningを出力させたい

    loggerコマンドでkern.warningを出力させたい Solaris8,9で、/etc/syslog.conf には、 *.err;kern.warning /var/adm/messages などと設定しました。 kern.warningを追記したので設定を確認しようと rootにて logger -p kern.warning "TEST" を 実行しても出力されません。 logger -p kern.error "TEST" とすると、 Jun 15 13:50:45 host foo: [ID 702911 user.error] TEST となって、facilityがuserになってしまうようです。 kern.warningをloggerコマンドで出力する方法をご存知ないでしょうか。

  • syslogからログが出力されなくなりました。

    こんにちは。 昨日よりログの出力が一切されなくなりました。 以下の状況です。 OS:Redhat ES4 カーネル:2.6.9-11 /etc/syslog.conf(デフォルトのまま) *.info;mail.none;・・・ /var/log/messages syslogデーモンの状況 psでの結果 syslogd -m 0 syslog以外のアプリケーションが出力しているログは 各ログに出力されています。 messages以外に、cron、secureなどsyslogが担当しているログが全て出力されません。 ログローテーションは使用しており、指定した日時に0バイトのままローテーションされています。 わかる方お願いします。

  • syslogの出力先追加

    syslogの出力先を追加する方法について教えていただきたいです。 使用環境は、Red Hat系のLinuxです。 現状、syslog.confの設定が下記のようになっているため、messagesファイルに syslogが大量に出力され、必要なログを探すのが大変な状態です。 syslog.confの中身 *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* /var/log/maillog cron.* /var/log/cron *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log そこでfacilityのlocal0-7を使用し、syslogに出力するファイルを分散 させようと考えています。 例えば、local0の出力先を追加するのは、syslog.confを下記のように 修正すればよいでしょうか。 (実際に試せばよいのでしょうが、多くの人達が使用している環境のため、  syslogd再起動が出来ない状態です。) messagesの設定 修正前:*.info;mail.none;authpriv.none;cron.none /var/log/messages 修正後:*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages local0の設定 追加:local0.* /var/log/ファイル名 ご回答の方、よろしくお願いします。

  • syslogでログファイルの出力方法

    現在、syslogを利用してログファイルを出力しようと思っています。 syslogというサービスを利用する事を教えて頂き、syslog.confを書き換えて Linux上でsyslogのサービスは起動しており、ファイルが自動的に作成されました。 (パーミッションが600なので644にしたいのですが、ひとまず置いておき、 手動でテスト的に777に変更しました) しかし、syslogのサービスが正常に動作しているかの確認は出来ておりません。 それでいてPHPからログが出力されるようにするコーディングが分かりません。 別環境の他のスクリプトで既に実績があるのですが、書き方が違う分、ダメなのかもしれません。 初めて使うので、定数が実際に何を意味しているのかがPHPのマニュアルを見ても意味不明です。 宜しければPHPを介在しない、syslogが正常に動作してログを出力してくれるLinuxのコマンドと、 PHPでのsyslogの書き方をご教示下さい。 現在、スクリプトはこんな感じです。 A.php $abc = LOG_LOCAL5; //実際はメソッドの引数(参照渡し) //↓実際は別クラスのメソッド $log = "test"; define_syslog_variables(); openlog('log', LOG_PID | LOG_PERROR, $abc); syslog(LOG_NOTICE, $log); closelog();

    • 締切済み
    • PHP
  • syslog.confの設定について

    ファシリティlocal6のログをtest.logに出力させるため syslog.confに下記のような行を追加しました。 local6.*        /var/log/test.log しかし、ファシリティlocal6で出力させたログが期待通りtest.logに出力されません。 (local6.debugのログは  *.=debug       /var/log/debug.log  という行があるためdebug.logに出力されていました) OSは FreeBSD8.1です。 なにがおかしいのか、確認すべき点を教えていただけないでしょうか。 よろしくお願いします。

  • syslog,klogのログレベルについて

    はじめまして、初投稿になります。 早速質問させてください。 現在、syslogのカーネルのメッセージを出力する設定を行っております。そこで質問なのですが、 --- emerg 0 LOG_EMERG システムが利用出来ないalert 1 LOG_ALERT 迅速に対処が必要 crit 2 LOG_CRIT 致命的な状態 err 3 LOG_ERR エラー warning 4 LOG_WARNING 警告 notice 5 LOG_NOTICE 重要な情報info 6 LOG_INFO なんらかの情報 debug 7 LOG_DEBUG デバッグ用 --- 上記のようなレベルを設定できるのは分かったのですが、それぞれのレベルが実際どのような、カーネルの状態のときにログが出力されるのかが分かりません。 そのあたりを教えてくださればと存じます。 何卒宜しくお願いいたします。

専門家に質問してみよう