File tree 2 files changed +49
-11
lines changed
2 files changed +49
-11
lines changed Original file line number Diff line number Diff line change @@ -114,20 +114,44 @@ func init() {
114
114
}
115
115
116
116
// New initializes and appends a new logger to the managed list.
117
- // Calling this function multiple times will overwrite previous logger with same mode.
117
+ // Calling this function multiple times will overwrite previous initialized
118
+ // logger with the same mode.
119
+ //
120
+ // Any integer type (i.e. int, int32, int64) will be used as buffer size.
121
+ // Otherwise, the value will be used as config object to the logger.
118
122
//
119
123
// This function is not concurrent safe.
120
- func New (mode Mode , bufferSize int64 , cfg interface {}) error {
124
+ //func New(mode Mode, bufferSize int64, cfg interface{}) error {
125
+ func New (mode Mode , opts ... interface {}) error {
121
126
r , ok := registers [mode ]
122
127
if ! ok {
123
128
return fmt .Errorf ("no register for %q" , mode )
124
129
}
125
130
131
+ bufferSize := 0
132
+ var cfg interface {}
133
+ for i := range opts {
134
+ switch opt := opts [i ].(type ) {
135
+ case int :
136
+ bufferSize = opt
137
+ case int32 :
138
+ bufferSize = int (opt )
139
+ case int64 :
140
+ bufferSize = int (opt )
141
+ default :
142
+ cfg = opt
143
+ }
144
+ }
145
+
126
146
l , err := r (cfg )
127
147
if err != nil {
128
148
return fmt .Errorf ("initialize logger: %v" , err )
129
149
}
130
150
151
+ if bufferSize < 0 {
152
+ bufferSize = 0
153
+ }
154
+
131
155
ctx , cancel := context .WithCancel (mgr .ctx )
132
156
cl := & cancelableLogger {
133
157
cancel : cancel ,
Original file line number Diff line number Diff line change @@ -89,14 +89,28 @@ func TestNew(t *testing.T) {
89
89
)
90
90
91
91
tests := []struct {
92
- name string
93
- mode Mode
94
- want error
92
+ name string
93
+ mode Mode
94
+ bufferSize interface {}
95
+ want error
95
96
}{
96
97
{
97
- name : "success" ,
98
- mode : testModeGood ,
99
- want : nil ,
98
+ name : "success" ,
99
+ mode : testModeGood ,
100
+ bufferSize : 1 ,
101
+ want : nil ,
102
+ },
103
+ {
104
+ name : "success" ,
105
+ mode : testModeGood ,
106
+ bufferSize : int32 (1 ),
107
+ want : nil ,
108
+ },
109
+ {
110
+ name : "success" ,
111
+ mode : testModeGood ,
112
+ bufferSize : int64 (1 ),
113
+ want : nil ,
100
114
},
101
115
{
102
116
name : "no register" ,
@@ -116,7 +130,7 @@ func TestNew(t *testing.T) {
116
130
}
117
131
for _ , tt := range tests {
118
132
t .Run (tt .name , func (t * testing.T ) {
119
- err := New (tt .mode , 10 , nil )
133
+ err := New (tt .mode , tt . bufferSize )
120
134
assert .Equal (t , tt .want , err )
121
135
})
122
136
}
@@ -129,15 +143,15 @@ func TestRemove(t *testing.T) {
129
143
mode : testMode1 ,
130
144
}, nil
131
145
})
132
- assert .Nil (t , New (testMode1 , 10 , nil ))
146
+ assert .Nil (t , New (testMode1 , - 1 ))
133
147
134
148
testMode2 := Mode ("TestRemove2" )
135
149
NewRegister (testMode2 , func (_ interface {}) (Logger , error ) {
136
150
return & noopLogger {
137
151
mode : testMode2 ,
138
152
}, nil
139
153
})
140
- assert .Nil (t , New (testMode2 , 10 , nil ))
154
+ assert .Nil (t , New (testMode2 , - 1 ))
141
155
142
156
tests := []struct {
143
157
name string
You can’t perform that action at this time.
0 commit comments