@@ -62,6 +62,48 @@ def test_custom_fmt(self):
62
62
self .assertTrue ('lineno' in data [0 ][2 ])
63
63
self .assertTrue ('emitted_at' in data [0 ][2 ])
64
64
65
+ def test_custom_field_raise_exception (self ):
66
+ handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
67
+
68
+ logging .basicConfig (level = logging .INFO )
69
+ log = logging .getLogger ('fluent.test' )
70
+ handler .setFormatter (
71
+ fluent .handler .FluentRecordFormatter (fmt = {
72
+ 'name' : '%(name)s' ,
73
+ 'custom_field' : '%(custom_field)s'
74
+ })
75
+ )
76
+ log .addHandler (handler )
77
+ with self .assertRaises (KeyError ):
78
+ log .info ({'sample' : 'value' })
79
+ log .removeHandler (handler )
80
+ handler .close ()
81
+
82
+ def test_custom_field_fill_missing_fmt_key_is_true (self ):
83
+ handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
84
+
85
+ logging .basicConfig (level = logging .INFO )
86
+ log = logging .getLogger ('fluent.test' )
87
+ handler .setFormatter (
88
+ fluent .handler .FluentRecordFormatter (fmt = {
89
+ 'name' : '%(name)s' ,
90
+ 'custom_field' : '%(custom_field)s'
91
+ },
92
+ fill_missing_fmt_key = True
93
+ )
94
+ )
95
+ log .addHandler (handler )
96
+ log .info ({'sample' : 'value' })
97
+ log .removeHandler (handler )
98
+ handler .close ()
99
+
100
+ data = self .get_data ()
101
+ self .assertTrue ('name' in data [0 ][2 ])
102
+ self .assertEqual ('fluent.test' , data [0 ][2 ]['name' ])
103
+ self .assertTrue ('custom_field' in data [0 ][2 ])
104
+ # field defaults to none if not in log record
105
+ self .assertIsNone (data [0 ][2 ]['custom_field' ])
106
+
65
107
def test_json_encoded_message (self ):
66
108
handler = fluent .handler .FluentHandler ('app.follow' , port = self ._port )
67
109
0 commit comments