@@ -169,7 +169,7 @@ func logfmt(buf *bytes.Buffer, ctx []interface{}, color int, term bool) {
169169		k , ok  :=  ctx [i ].(string )
170170		v  :=  formatLogfmtValue (ctx [i + 1 ], term )
171171		if  ! ok  {
172- 			k , v  =  errorKey , formatLogfmtValue ( k ,  term )
172+ 			k , v  =  errorKey , fmt . Sprintf ( "%+T is not a string key" ,  ctx [ i ] )
173173		} else  {
174174			k  =  escapeString (k )
175175		}
@@ -218,20 +218,20 @@ func JSONFormatOrderedEx(pretty, lineSeparated bool) Format {
218218		}
219219	}
220220	return  FormatFunc (func (r  * Record ) []byte  {
221- 		props  :=  make ( map [string ]interface {}) 
222- 
223- 		props [ r .KeyNames .Time ]  =  r .Time 
224- 		props [ r .KeyNames .Lvl ]  =  r .Lvl . String () 
225- 		props [ r . KeyNames . Msg ]  =   r . Msg 
221+ 		props  :=  map [string ]interface {}{ 
222+ 			 r . KeyNames . Time :  r . Time , 
223+ 			 r .KeyNames .Lvl :   r .Lvl . String (), 
224+ 			 r .KeyNames .Msg :   r .Msg , 
225+ 		} 
226226
227227		ctx  :=  make ([]string , len (r .Ctx ))
228228		for  i  :=  0 ; i  <  len (r .Ctx ); i  +=  2  {
229- 			k , ok  :=  r .Ctx [i ].(string )
230- 			if  ! ok  {
231- 				props [errorKey ] =  fmt .Sprintf ("%+v is not a string key," , r .Ctx [i ])
229+ 			if  k , ok  :=  r .Ctx [i ].(string ); ok  {
230+ 				ctx [i ] =  k 
231+ 				ctx [i + 1 ] =  formatLogfmtValue (r .Ctx [i + 1 ], true )
232+ 			} else  {
233+ 				props [errorKey ] =  fmt .Sprintf ("%+T is not a string key," , r .Ctx [i ])
232234			}
233- 			ctx [i ] =  k 
234- 			ctx [i + 1 ] =  formatLogfmtValue (r .Ctx [i + 1 ], true )
235235		}
236236		props [r .KeyNames .Ctx ] =  ctx 
237237
@@ -261,18 +261,19 @@ func JSONFormatEx(pretty, lineSeparated bool) Format {
261261	}
262262
263263	return  FormatFunc (func (r  * Record ) []byte  {
264- 		props  :=  make ( map [string ]interface {}) 
265- 
266- 		props [ r .KeyNames .Time ]  =  r .Time 
267- 		props [ r .KeyNames .Lvl ]  =  r .Lvl . String () 
268- 		props [ r . KeyNames . Msg ]  =   r . Msg 
264+ 		props  :=  map [string ]interface {}{ 
265+ 			 r . KeyNames . Time :  r . Time , 
266+ 			 r .KeyNames .Lvl :   r .Lvl . String (), 
267+ 			 r .KeyNames .Msg :   r .Msg , 
268+ 		} 
269269
270270		for  i  :=  0 ; i  <  len (r .Ctx ); i  +=  2  {
271271			k , ok  :=  r .Ctx [i ].(string )
272272			if  ! ok  {
273- 				props [errorKey ] =  fmt .Sprintf ("%+v is not a string key" , r .Ctx [i ])
273+ 				props [errorKey ] =  fmt .Sprintf ("%+T is not a string key" , r .Ctx [i ])
274+ 			} else  {
275+ 				props [k ] =  formatJSONValue (r .Ctx [i + 1 ])
274276			}
275- 			props [k ] =  formatJSONValue (r .Ctx [i + 1 ])
276277		}
277278
278279		b , err  :=  jsonMarshal (props )
0 commit comments