回答編集履歴

2

追記

2018/11/30 09:18

投稿

asm
asm

スコア15147

test CHANGED
@@ -43,3 +43,83 @@
43
43
  $stdout = mirror
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ ```rb
56
+
57
+ require 'logger'
58
+
59
+
60
+
61
+ $logger = Logger.new("ログファイル")
62
+
63
+
64
+
65
+ # logger
66
+
67
+ %i[unknown fatal error warn info debug].each{|sev|
68
+
69
+ define_method(sev){|*arg, &proc| $logger.send(sev, *arg, &proc)}
70
+
71
+ }
72
+
73
+
74
+
75
+ def main
76
+
77
+ # テスト
78
+
79
+ info{ "block" }
80
+
81
+ unknown("unk")
82
+
83
+ fatal("fatal")
84
+
85
+ error("error")
86
+
87
+ warn("warn")
88
+
89
+ info("info")
90
+
91
+ debug("debug")
92
+
93
+
94
+
95
+ # 例外が発生した場合も記録される
96
+
97
+ raise "test"
98
+
99
+ end
100
+
101
+
102
+
103
+ main rescue fatal($!)
104
+
105
+ ```
106
+
107
+
108
+
109
+ ちなみに、「`log.info("")`」において
110
+
111
+ **引数**: `""`
112
+
113
+ **レシーバー**: `log`
114
+
115
+ **メソッド名**: `info`
116
+
117
+
118
+
119
+ なので
120
+
121
+ > 引数にして出力する方法
122
+
123
+
124
+
125
+ ではなく「**レシーバー**を指定して出力する方法」かなと思います。

1

修正

2018/11/30 09:18

投稿

asm
asm

スコア15147

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  def mirror.write(str)
36
36
 
37
- @ofiile.write str
37
+ @ofile.write str
38
38
 
39
39
  STDOUT.write str
40
40