@@ -28,6 +28,7 @@ def test_simple(self):
28
28
'from' : 'userA' ,
29
29
'to' : 'userB'
30
30
})
31
+ log .removeHandler (handler )
31
32
handler .close ()
32
33
33
34
data = self .get_data ()
@@ -54,6 +55,7 @@ def test_custom_fmt(self):
54
55
)
55
56
log .addHandler (handler )
56
57
log .info ({'sample' : 'value' })
58
+ log .removeHandler (handler )
57
59
handler .close ()
58
60
59
61
data = self .get_data ()
@@ -62,6 +64,48 @@ def test_custom_fmt(self):
62
64
self .assertTrue ('lineno' in data [0 ][2 ])
63
65
self .assertTrue ('emitted_at' in data [0 ][2 ])
64
66
67
+ def test_custom_field_raise_exception (self ):
68
+ handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
69
+
70
+ logging .basicConfig (level = logging .INFO )
71
+ log = logging .getLogger ('fluent.test' )
72
+ handler .setFormatter (
73
+ fluent .handler .FluentRecordFormatter (fmt = {
74
+ 'name' : '%(name)s' ,
75
+ 'custom_field' : '%(custom_field)s'
76
+ })
77
+ )
78
+ log .addHandler (handler )
79
+ with self .assertRaises (KeyError ):
80
+ log .info ({'sample' : 'value' })
81
+ log .removeHandler (handler )
82
+ handler .close ()
83
+
84
+ def test_custom_field_fill_missing_fmt_key_is_true (self ):
85
+ handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
86
+
87
+ logging .basicConfig (level = logging .INFO )
88
+ log = logging .getLogger ('fluent.test' )
89
+ handler .setFormatter (
90
+ fluent .handler .FluentRecordFormatter (fmt = {
91
+ 'name' : '%(name)s' ,
92
+ 'custom_field' : '%(custom_field)s'
93
+ },
94
+ fill_missing_fmt_key = True
95
+ )
96
+ )
97
+ log .addHandler (handler )
98
+ log .info ({'sample' : 'value' })
99
+ log .removeHandler (handler )
100
+ handler .close ()
101
+
102
+ data = self .get_data ()
103
+ self .assertTrue ('name' in data [0 ][2 ])
104
+ self .assertEqual ('fluent.test' , data [0 ][2 ]['name' ])
105
+ self .assertTrue ('custom_field' in data [0 ][2 ])
106
+ # field defaults to none if not in log record
107
+ self .assertIsNone (data [0 ][2 ]['custom_field' ])
108
+
65
109
def test_json_encoded_message (self ):
66
110
handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
67
111
@@ -70,6 +114,7 @@ def test_json_encoded_message(self):
70
114
handler .setFormatter (fluent .handler .FluentRecordFormatter ())
71
115
log .addHandler (handler )
72
116
log .info ('{"key": "hello world!", "param": "value"}' )
117
+ log .removeHandler (handler )
73
118
handler .close ()
74
119
75
120
data = self .get_data ()
@@ -84,6 +129,7 @@ def test_unstructured_message(self):
84
129
handler .setFormatter (fluent .handler .FluentRecordFormatter ())
85
130
log .addHandler (handler )
86
131
log .info ('hello %s' , 'world' )
132
+ log .removeHandler (handler )
87
133
handler .close ()
88
134
89
135
data = self .get_data ()
@@ -98,6 +144,7 @@ def test_unstructured_formatted_message(self):
98
144
handler .setFormatter (fluent .handler .FluentRecordFormatter ())
99
145
log .addHandler (handler )
100
146
log .info ('hello world, %s' , 'you!' )
147
+ log .removeHandler (handler )
101
148
handler .close ()
102
149
103
150
data = self .get_data ()
@@ -112,6 +159,7 @@ def test_non_string_simple_message(self):
112
159
handler .setFormatter (fluent .handler .FluentRecordFormatter ())
113
160
log .addHandler (handler )
114
161
log .info (42 )
162
+ log .removeHandler (handler )
115
163
handler .close ()
116
164
117
165
data = self .get_data ()
@@ -125,6 +173,7 @@ def test_non_string_dict_message(self):
125
173
handler .setFormatter (fluent .handler .FluentRecordFormatter ())
126
174
log .addHandler (handler )
127
175
log .info ({42 : 'root' })
176
+ log .removeHandler (handler )
128
177
handler .close ()
129
178
130
179
data = self .get_data ()
0 commit comments