内容へ移動
alone-doc
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
バックリンク
メディアマネージャー
サイトマップ
ログイン
>
メディアマネージャー
サイトマップ
現在位置:
start
»
alworker
»
ロギング
トレース:
alworker:ロギング
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== AlWorker ロギング ====== require "al_worker" ---- Ruby標準のLoggerクラスを使って、ログをとります。\\ デフォルトで、/tmp以下にログファイルを作ります。\\ ファイル名は、コンストラクタに指定した名前+.logです。 ===== ログの記録 ===== <code ruby sample_log.rb> #!/usr/bin/env ruby require "al_worker" class Worker1 < AlWorker def idle_task() log("Info level log" ) log("Specify severity", :fatal ) log("Specify progname", :info, "PROGNAME" ) raise "User runtime error." rescue =>ex log( ex ) end end worker1 = Worker1.new("sample_log") worker1.run(:exit_idle_task) </code> 実行結果 <code> cat /tmp/sample_log.log # Logfile created on 2026-06-17 14:27:33 +0900 by logger.rb/v1.6.4 I, [2026-06-17T14:27:33.078994 #22627] INFO -- sample_log: start I, [2026-06-17T14:27:33.079165 #22627] INFO -- : Info level log F, [2026-06-17T14:27:33.079220 #22627] FATAL -- : Specify severity I, [2026-06-17T14:27:33.079245 #22627] INFO -- PROGNAME: Specify progname E, [2026-06-17T14:27:33.079280 #22627] ERROR -- : RuntimeError / User runtime error. E, [2026-06-17T14:27:33.079312 #22627] ERROR -- : BACKTRACE: sample_log.rb:10:in 'Worker1#idle_task' /Users/hirohito/tst/alone-release3.9/alone/lib/al_worker.rb:754:in 'block in AlWorker#run' I, [2026-06-17T14:27:33.079496 #22627] INFO -- sample_log: finish </code> ===== 解説 ===== log() メソッドに、文字列のみ与えると、Info レベルのログが記録されます。\\ 第2引数に、severity が指定できます。指定できる値は以下のとおりです。\\ * :fatal * :error * :warn * :info * :debug 第3引数に、ログ文字列に追加するプログラム名を指定できます。\\ 第1引数に例外オブジェクトを指定した場合、例外内容とバックトレースが記録されます。\\ デフォルトで、ログサイズ 1048576バイト以上になるとログをローテートし、過去ログを3代保存します。\\ (注意)コンストラクタでは、ログ記録ができません。 ===== アレンジ ===== ログファイル名の変更は、Workerオブジェクトのlog_filenameアトリビュートを変更することで行えます。 <code ruby> def initialize(*arg) @log_filename = "/var/log/prog.log" end </code> または、 <code ruby> worker1 = Worker1.new() worker1.log_filename = "/var/log/prog.log" worker1.daemon() </code> 記録するログレベルの変更は、以下の通り行うことができます。\\ デフォルトでは、INFO もしくは DEBUG です。 <code ruby> def initialize2() log.level = Logger::ERROR end </code> @@log変数にLoggerオブジェクトを代入することで、任意のログに変更できます。 <code ruby> def initialize(*arg) @@log = Logger.new("/var/log/prog.log", 16 ) @@log.level = Logger::DEBUG super end </code> Syslogでログを取得する場合 <code ruby> require "syslog/logger" def initialize(*arg) super @@log = Syslog::Logger.new( @name ) end </code> STDERRへログを表示する場合 <code ruby> def initialize(*arg) @@log = Logger.new(STDERR) @@log.level = Logger::DEBUG super end </code> ログが不要の場合は、@@logにfalseを指定するか、run()/daemon()メソッドに:nologパラメータを与えます。 <code ruby> def initialize(*arg) super @@log = false end </code> <code ruby> worker.run( :nolog ) </code> (注意)内部処理の都合上、コンストラクタですべき事とイニシャライザですべき事が混在しています。
alworker/ロギング.txt
· 最終更新:
2026/06/17 14:33
by
hirohito
ページ用ツール
文書の表示
バックリンク
文書の先頭へ