@@ -68,6 +68,54 @@ func TestDefaultFormatter_Format_AllColor(t *testing.T) {
6868 }
6969}
7070
71+ func TestDefaultFormatter_Format_ConditionalColor (t * testing.T ) {
72+ tests := []struct {
73+ level logger.Level
74+ expected string
75+ }{
76+ {level : logger .EmergencyLevel , expected : "\x1b [1;37;41m<emergency>\x1b [m my message" },
77+ {level : logger .AlertLevel , expected : "\x1b [1;30;43m<alert>\x1b [m my message" },
78+ {level : logger .CriticalLevel , expected : "\x1b [1;30;47m<critical>\x1b [m my message" },
79+ {level : logger .ErrorLevel , expected : "\x1b [1;31m<error>\x1b [m my message" },
80+ {level : logger .WarningLevel , expected : "\x1b [1;33m<warning>\x1b [m my message" },
81+ {level : logger .NoticeLevel , expected : "<notice> my message" },
82+ {level : logger .InfoLevel , expected : "<info> my message" },
83+ {level : logger .DebugLevel , expected : "<debug> my message" },
84+ }
85+ defaultFormatter := formatter .NewDefaultFormatter (formatter .WithConditionalColor (func (e logger.Entry ) bool {
86+ return e .Level <= logger .WarningLevel
87+ }))
88+ for _ , tt := range tests {
89+ t .Run (tt .level .String (), func (t * testing.T ) {
90+ assert .Equal (t , tt .expected , defaultFormatter .Format (logger.Entry {Level : tt .level , Message : "my message" }))
91+ })
92+ }
93+ }
94+
95+ func TestDefaultFormatter_Format_ConditionalContext (t * testing.T ) {
96+ tests := []struct {
97+ level logger.Level
98+ expected string
99+ }{
100+ {level : logger .EmergencyLevel , expected : `<emergency> my message {"my_name":"my value"}` },
101+ {level : logger .AlertLevel , expected : `<alert> my message {"my_name":"my value"}` },
102+ {level : logger .CriticalLevel , expected : `<critical> my message {"my_name":"my value"}` },
103+ {level : logger .ErrorLevel , expected : `<error> my message {"my_name":"my value"}` },
104+ {level : logger .WarningLevel , expected : `<warning> my message {"my_name":"my value"}` },
105+ {level : logger .NoticeLevel , expected : "<notice> my message" },
106+ {level : logger .InfoLevel , expected : "<info> my message" },
107+ {level : logger .DebugLevel , expected : "<debug> my message" },
108+ }
109+ defaultFormatter := formatter .NewDefaultFormatter (formatter .WithConditionalContext (func (e logger.Entry ) bool {
110+ return e .Level <= logger .WarningLevel
111+ }))
112+ for _ , tt := range tests {
113+ t .Run (tt .level .String (), func (t * testing.T ) {
114+ assert .Equal (t , tt .expected , defaultFormatter .Format (logger.Entry {Level : tt .level , Message : "my message" , Context : logger .Ctx ("my_name" , "my value" )}))
115+ })
116+ }
117+ }
118+
71119// =====================================================================================================================
72120// ================================================= EXAMPLES ==========================================================
73121// =====================================================================================================================
0 commit comments