package Ġpers . ac p . spring . cloud . log Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Processing Exception Ċ import Ġpers . ac p . core . Common Tools Ċ import Ġpers . ac p . core . log . Log Factory Ċ import Ġpers . ac p . core . task . Base AsyncTask Ċ import Ġpers . ac p . core . task . thread pool . ThreadPool Service Ċ import Ġpers . ac p . spring . boot . interfaces . Log Adapter Ċ import Ġpers . ac p . spring . boot . tools . Spring BeanFactory Ċ import Ġpers . ac p . spring . cloud . component . Cloud Tools Ċ import Ġpers . ac p . spring . cloud . enums . LogLevel Ċ import Ġpers . ac p . spring . cloud . conf . Ac p Cloud Log Server Client Configuration Ċ import Ġpers . ac p . spring . cloud . log . producer . Log Bridge Ċ Ċ /** Ċ Ġ* Ġ æĹ¥å¿Ĺ å®ŀä¾ĭ Ċ Ġ* Ċ Ġ* Ġ@ author Ġz hang bin Ġby Ġ 1 1 / 0 7 / 2 0 1 8 Ġ 1 3 : 3 6 Ċ Ġ* Ġ@ since ĠJDK Ġ 1 1 Ċ Ġ*/ Ċ class ĠCloud Log Adapter ( ĊĠĠĠ Ġprivate Ġval Ġcloud Tools : ĠCloud Tools , ĊĠĠĠ Ġprivate Ġval Ġac p Cloud Log Server Client Configuration : ĠA cp Cloud Log Server Client Configuration , ĊĠĠĠ Ġprivate Ġval Ġlog Bridge : ĠLog Bridge Ċ ) Ġ: ĠLog Adapter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Factory . getInstance ( this . java Class , Ġ 4 ) ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Log Info (): ĠLog Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= ĠSpring BeanFactory . getBean ( Log Info :: class . java ) ĊĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlog Type Ġ= Ġac p Cloud Log Server Client Configuration . log Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Common Tools . isNull Str ( log Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Type Ġ= ĠLog Constant . DEFAULT _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . log Type Ġ= Ġlog Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . server Ip Ġ= Ġcloud Tools . getServer Ip () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . server Port Ġ= Ġcloud Tools . getServer Port () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlog Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend To Log Server ( log Info : ĠLog Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstacks Ġ= ĠThread . currentThread (). stack Trace ĊĠĠĠĠĠĠĠ Ġ// Ġ åĲ¯åĬ¨ ä¸Ģä¸ª çº¿ç¨ĭ æ±ł ï¼Į æ±ł ä¸Ń ä»ħ æľīä¸Ģä¸ª çº¿ç¨ĭ ï¼Į ä¿Ŀè¯ģ æ¯ıä¸ª æĹ¥å¿Ĺ æ¶Īæģ¯ é¡ºåºı å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġval Ġthread Pool Service Ġ= ĠThreadPool Service . getInstance ( 1 , Ġ 1 , ĠInt . MAX _ VALUE , Ġ" cloud _ log _ adapter _ thread _ pool ") ĊĠĠĠĠĠĠĠ Ġthread Pool Service . add Task ( object Ġ: ĠBase AsyncTask (" cloud _ log _ adapter _ thread _ task ", Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore Execute Fun (): ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter Execute Fun ( result : ĠAny ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute Fun (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info . server Time Ġ= ĠCommon Tools . get Now DateTime (). toDate (). time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline No Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠclassName Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stacks . size Ġ>= Ġlog . stack Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline No Ġ= Ġstacks [ log . stack Index Ġ- Ġ 1 ]. line Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġstacks [ log . stack Index Ġ- Ġ 1 ]. className ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info . line No Ġ= Ġline No ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info . className Ġ= ĠclassName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ac p Cloud Log Server Client Configuration . enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Bridge . send ( log Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJson Processing Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error ( e . message , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info ( message ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Info Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Info . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( message : ĠString ?, Ġvar arg Ġvariable : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info ( message , Ġ* variable ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Info Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Info . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . params Ġ= Ġarray ListOf (* variable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( message : ĠString ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info ( message , Ġt ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Info Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Info . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug ( message ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Debug . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( message : ĠString ?, Ġvar arg Ġvariable : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug ( message , Ġ* variable ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Debug . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . params Ġ= Ġarray ListOf (* variable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdebug ( message : ĠString ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug ( message , Ġt ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Debug . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . warn ( message ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Warn Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Warn . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( message : ĠString ?, Ġvar arg Ġvariable : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . warn ( message , Ġ* variable ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Warn Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Warn . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . params Ġ= Ġarray ListOf (* variable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( message : ĠString ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . warn ( message , Ġt ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Warn Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Warn . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( message ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isError Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Error . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( message : ĠString ?, Ġvar arg Ġvariable : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( message , Ġ* variable ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isError Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Error . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . params Ġ= Ġarray ListOf (* variable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( message : ĠString ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( message , Ġt ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isError Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Error . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . trace ( message ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Trace . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( message : ĠString ?, Ġvar arg Ġvariable : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . trace ( message , Ġ* variable ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Trace . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . params Ġ= Ġarray ListOf (* variable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrace ( message : ĠString ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . trace ( message , Ġt ) ĊĠĠĠĠĠĠĠ Ġif Ġ( log . is Trace Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Info Ġ= Ġgenerate Log Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . logLevel Ġ= ĠLogLevel . Trace . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Log Server ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ