package Ġv ip . m yst ery 0 . base . spring boot . config . log Ċ Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . slf 4 j . M DC Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . z al ando . log book .* Ċ import Ġv ip . m yst ery 0 . base . spring boot . constant . M DC _ IP Ċ import Ġv ip . m yst ery 0 . base . spring boot . constant . M DC _ URI Ċ import Ġv ip . m yst ery 0 . base . spring boot . utils . Trace Helper . begin Trace Ċ import Ġv ip . m yst ery 0 . base . spring boot . utils . Trace Helper . end Trace Ċ import Ġv ip . m yst ery 0 . tools . kotlin . factory . toJson Ċ Ċ /** Ċ Ġ* Ġ@ author Ġmyst ery 0 Ċ Ġ* ĠCreate Ġat Ġ 2 0 2 1 / 1 / 1 9 Ċ Ġ*/ Ċ class ĠLog book Formatter Ġ: ĠHttp Log Formatter Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlog Condition : ĠLog Condition ĊĊĠĠĠ Ġoverride Ġfun Ġformat ( prec orre lation : ĠPrec orre lation , Ġrequest : ĠHttpRequest ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbegin Trace ( request ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log Condition . log Request ( request )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" ++++++++++++++++ ++ -- ĠRequest Ġ-- ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Remote : Ġ{}", ĠM DC . get ( M DC _ IP )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace ("{} Ġ{} Ġ{}", Ġrequest . method , ĠM DC . get ( M DC _ URI ), Ġrequest . protocol Version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Headers ( request . headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Body ( request . body AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" ++++++++++++++++ ++ == ĠRequest Ġ== ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġformat ( correlation : ĠCorre lation , Ġresponse : ĠHttpResponse ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( log Condition . log Response ( response )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmillis Ġ= Ġcorrelation . duration . to Millis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( millis Ġ> Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" ++++++++++++++++ ++ -- ĠResponse Ġ-- ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" << Rest ĠAPI Ġresponse Ġis Ġslow , Ġplease Ġpay Ġattention Ġto Ġoptimization >> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Uri : Ġ{}", ĠM DC . get ( M DC _ URI )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Response : Ġ{} Ġ{}", Ġresponse . status , Ġresponse . reason Phrase ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Cost : Ġ{} Ġms ", Ġcorrelation . duration . to Millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" ++++++++++++++++ ++ == ĠResponse Ġ== ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" ++++++++++++++++ ++ -- ĠResponse Ġ-- ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Uri : Ġ{}", ĠM DC . get ( M DC _ URI )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Response : Ġ{} Ġ{}", Ġresponse . status , Ġresponse . reason Phrase ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Cost : Ġ{} Ġms ", Ġcorrelation . duration . to Millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" ++++++++++++++++ ++ == ĠResponse Ġ== ++++++++++++++++ ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġend Trace () ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Headers ( headers : ĠMap < String , ĠList < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( headers . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġheaders String Ġ= Ġheaders . toJson () ĊĠĠĠĠĠĠĠ Ġlog . trace (" Headers : Ġ{} Ġ", Ġheaders String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Body ( body : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( body . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlog . trace (" Body : Ġ{}", Ġbody ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger (" Http Log ") ĊĠĠĠ Ġ} Ċ }