@@ -36,3 +36,41 @@ func TestDifferentLevelsGoToDifferentWriters(t *testing.T) {
36
36
assert .Equal (t , a .String (), "level=warning msg=\" send to a\" \n " )
37
37
assert .Equal (t , b .String (), "level=info msg=\" send to b\" \n " )
38
38
}
39
+
40
+ func TestDifferentFormattersToDifferentWritter (t * testing.T ) {
41
+ var a , b bytes.Buffer
42
+
43
+ log .SetOutput (ioutil .Discard ) // Send all logs to nowhere by default
44
+
45
+ log .AddHook (& Hook {
46
+ Writer : & a ,
47
+ LogLevels : []log.Level {
48
+ log .WarnLevel ,
49
+ },
50
+ Formatter : & log.TextFormatter {
51
+ DisableTimestamp : true ,
52
+ DisableColors : true ,
53
+ FieldMap : log.FieldMap {
54
+ log .FieldKeyLevel : "@level" ,
55
+ log .FieldKeyMsg : "@message" ,
56
+ },
57
+ },
58
+ })
59
+ log .AddHook (& Hook { // Send info and debug logs to stdout
60
+ Writer : & b ,
61
+ LogLevels : []log.Level {
62
+ log .InfoLevel ,
63
+ },
64
+ Formatter : & log.JSONFormatter {
65
+ DisableTimestamp : true ,
66
+ FieldMap : log.FieldMap {
67
+ log .FieldKeyMsg : "message" ,
68
+ },
69
+ },
70
+ })
71
+ log .Warn ("send to a" )
72
+ log .Info ("send to b" )
73
+
74
+ assert .Equal (t , a .String (), "@level=warning @message=\" send to a\" \n " )
75
+ assert .Equal (t , b .String (), "{\" level\" :\" info\" ,\" message\" :\" send to b\" }\n " )
76
+ }
0 commit comments