alworker:ロギング
no way to compare when less than two revisions
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | |||
— | alworker:ロギング [2014/07/18 10:23] – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== AlWorker ロギング ====== | ||
+ | |||
+ | require " | ||
+ | ---- | ||
+ | Ruby標準のLoggerクラスを使って、ログをとります。\\ | ||
+ | デフォルトで、/ | ||
+ | ファイル名は、コンストラクタに指定した名前+.logです。 | ||
+ | |||
+ | ===== ログの記録 ===== | ||
+ | |||
+ | <code ruby> | ||
+ | class Worker1 < AlWorker | ||
+ | def func1() | ||
+ | log( "Info level log" ) | ||
+ | log( " | ||
+ | log( " | ||
+ | |||
+ | rescue =>ex | ||
+ | log( ex ) | ||
+ | |||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 解説 ===== | ||
+ | |||
+ | log() メソッドに、文字列のみ与えると、Info レベルのログが記録されます。\\ | ||
+ | 第2引数に、severity が指定できます。指定できる値は以下のとおりです。\\ | ||
+ | * :fatal | ||
+ | * :error | ||
+ | * :warn | ||
+ | * :info | ||
+ | * :debug | ||
+ | |||
+ | 第3引数に、ログ文字列に追加するプログラム名を指定できます。 | ||
+ | |||
+ | 第一引数に例外オブジェクトを指定した場合、例外内容とバックトレースが記録されます。 | ||
+ | |||
+ | デフォルトで、ログサイズ 1048576バイト以上になるとログをローテートし、過去ログを3代保存します。 | ||
+ | |||
+ | (注意)コンストラクタでは、ログ記録ができません。 | ||
+ | |||
+ | |||
+ | ===== アレンジ ===== | ||
+ | |||
+ | ログファイル名の変更は、Workerオブジェクトのlog_filenameアトリビュートを変更することで行えます。 | ||
+ | |||
+ | <code ruby> | ||
+ | def initialize() | ||
+ | @log_filename = "/ | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | または、 | ||
+ | |||
+ | <code ruby> | ||
+ | worker1 = Worker1.new() | ||
+ | worker1.log_filename = "/ | ||
+ | worker1.daemon() | ||
+ | </ | ||
+ | |||
+ | ログレベルの変更は、以下の通り行うことができます。 | ||
+ | |||
+ | <code ruby> | ||
+ | def initialize2() | ||
+ | log.level = Logger:: | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | |||
+ | @@log変数にLoggerオブジェクトを代入することで、任意のログに変更できます。 | ||
+ | |||
+ | <code ruby> | ||
+ | def initialize() | ||
+ | @@log = Logger.new( "/ | ||
+ | @@log.level = Logger:: | ||
+ | super | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | 応用例として、Syslogでログを取得することもできます。 | ||
+ | |||
+ | <code ruby> | ||
+ | require " | ||
+ | |||
+ | def initialize() | ||
+ | super | ||
+ | @@log = Syslog:: | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | |||
+ | ログが不要の場合は、@@logにfalseを指定するか、run()/ | ||
+ | |||
+ | <code ruby> | ||
+ | def initialize() | ||
+ | super | ||
+ | @@log = false | ||
+ | end | ||
+ | </ | ||
+ | | ||
+ | <code ruby> | ||
+ | worker.run( :nolog ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | (注意)内部処理の都合上、コンストラクタですべき事とイニシャライザですべき事が混在しています。 | ||
+ | |||
alworker/ロギング.txt · 最終更新: 2023/08/15 10:45 by hirohito