• 締切済み

再度 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に対してはまとめて出力する事は不可能なのでしょうか。 宜しくお願い致します。

  • prr4e
  • お礼率48% (66/136)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

環境を書いてください OS、PHPのバージョン、出力したいログファイルなど

prr4e
質問者

補足

すみません。 サーバ環境:linux PHP version:5.4 出力したいファイルは $identでしていしたファイル名が出力されるよう設定されています。 $ident = 'test' test.logが出力される となっています。

関連するQ&A

  • 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
  • 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
  • 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
  • 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
  • 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.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出力

    いつもお世話になっております。 標題についてご教授願えないでしょうか。 今までfwrite等でファイルに出力していた内容を SYSLOGにて出力する事となりました。 その際、これまでfor(i=0; ・・・)等のループ内で ファイル出力して、ループを抜けたらfclose()としていた処理で、 同様の処理が出来るが教えて頂きたいです。 纏めと、ループ内のfwriteをsyslogに変更 openlogとcloselogはループ外

    • ベストアンサー
    • PHP
  • syslogで出力されるパス

    今syslogで出力されるパスを変更したいのですが、どうやるのか全く不明です。 現在、デフォルトのerror_logのパスは/var/log/abc.logなのですが、 一部の処理で、syslogで/var/log/abc/abc.logに出力をしています。 それに倣おうと思うのですが、どうやって/var/log/abc/abc.logに 出力しているのか全然分かりません。 syslogを使う時にパス指定など出来るのでしょうか? またはどこかでini_set()しているという事になるのでしょうか?

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

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

    • ベストアンサー
    • Perl

専門家に質問してみよう