質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

3072閲覧

rubyでログをファイルに出力したい

kozica

総合スコア58

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/11/29 12:38

ある.rbファイルを実行時のログを出力したいです。
調べると「log.info("")」のように引数にして出力する方法ばかりで
引数指定せずでもログを指定ファイルに出力するようにしたいです。
ERR、OUTで分けれたらわけたいです。

ruby

1require 'logger' 2 3log = Logger.new("tmp/log") ?あってるかわからない 4 5処理...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/11/29 12:59

「引数指定せずでも」→どういう意味でしょうか?
kozica

2018/11/29 13:35

色々サイト見たのですが、log.info("hoge")などで引数を使い出力する方法では処理すべての行をlog.info("")の引数にすることになってしまうので、引数を使わずにログ出力したいということです。私の説明が下手すぎてこれでも伝わらないかと思いますがすいません。
kozica

2018/11/29 13:36

方法として $ruby sample.rb > log という方法がありました。
kozica

2018/11/29 13:37

ほかに、処理すべてbegin~rescue~endで囲う方法もありますが、これは美しくないですかね
guest

回答1

0

解釈にあまり自信がありませんが、
puts等で表示される文字列をファイルに出力したい」という要望でしょうか?

それならば

rb

1$stdout = File.open("ログファイル") 2puts "これ以降出力がログファイルに変更されます" 3$stdout = STDOUT 4puts "戻ります"

ファイルと端末の両方に出力したい場合は

rb

1mirror = Object.new 2mirror.instance_eval{@ofile=open("ログファイル", "w:utf-8")} 3def mirror.write(str) 4 @ofile.write str 5 STDOUT.write str 6end 7$stdout = mirror

rb

1require 'logger' 2 3$logger = Logger.new("ログファイル") 4 5# logger 6%i[unknown fatal error warn info debug].each{|sev| 7 define_method(sev){|*arg, &proc| $logger.send(sev, *arg, &proc)} 8} 9 10def main 11 # テスト 12 info{ "block" } 13 unknown("unk") 14 fatal("fatal") 15 error("error") 16 warn("warn") 17 info("info") 18 debug("debug") 19 20 # 例外が発生した場合も記録される 21 raise "test" 22end 23 24main rescue fatal($!)

ちなみに、「log.info("")」において
引数: ""
レシーバー: log
メソッド名: info

なので

引数にして出力する方法

ではなく「レシーバーを指定して出力する方法」かなと思います。

投稿2018/11/29 18:59

編集2018/11/30 09:18
asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozica

2018/11/30 05:49

なるほど。 このような方法もあるんですね。 勉強になります。 ログの頭にタイムスタンプをつけることは可能でしょうか? いつ何がおこったかをみるためにもタイムスタンプがあるのが望ましいからです。
kozica

2018/11/30 06:22

rubyのスクリプトファイルを作成しており、それをcronで月一実行させます。 そこで、しっかりログを残しておく必要があり、今回の質問に至りました。 運用を考えてログ出力をしたことないので、ログ出力の仕方、ログフォーマットはどうするかなどわからないことだらなのでが現状です。
asm

2018/11/30 08:39

うーん、それならlogger使った方がよさそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問