/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 - 2 0 1 9 Ġ äºº äºº å¼ĢæºĲ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġhttps :// www . ren ren . io Ċ Ġ* Ċ Ġ* Ġ çīĪ æĿĥ æīĢæľī ï¼Į ä¾ µ æĿĥ å¿ħ ç©¶ ï¼ģ Ċ Ġ*/ Ċ Ċ package Ġio . ren ren . common . aspect Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġio . ren ren . common . annotation . Sys Log Ċ import Ġio . ren ren . common . utils . HttpContext Utils Ċ import Ġio . ren ren . common . utils . IP Utils Ċ import Ġio . ren ren . modules . sys . entity . Sys Log Entity Ċ import Ġio . ren ren . modules . sys . entity . Sys User Entity Ċ import Ġio . ren ren . modules . sys . service . Sys Log Service Ċ import Ġorg . apache . shiro . Security Utils Ċ import Ġorg . aspect j . lang . Pro ceeding Join Point Ċ import Ġorg . aspect j . lang . annotation . Around Ċ import Ġorg . aspect j . lang . annotation . Aspect Ċ import Ġorg . aspect j . lang . annotation . Point cut Ċ import Ġorg . aspect j . lang . reflect . Method Signature Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* Ġ ç³»ç»Ł æĹ¥å¿Ĺ ï¼Į åĪĩ éĿ¢ å¤ĦçĲĨ ç±» Ċ Ġ* Ċ Ġ* Ġ@ author ĠMark Ġsun light cs @ gmail . com Ċ Ġ*/ Ċ @ Aspect Ċ @ Component Ċ class ĠSys Log Aspect Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġsys Log Service : ĠSys Log Service ĊĊĠĠĠ Ġ@ Point cut ("@ annotation ( io . ren ren . common . annotation . Sys Log )") ĊĠĠĠ Ġfun Ġlog Point Cut () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Around (" log Point Cut () ") ĊĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠ Ġfun Ġaround ( point : ĠPro ceeding Join Point ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbegin Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ// æī§è¡Į æĸ¹æ³ķ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpoint . proceed () ĊĠĠĠĠĠĠĠ Ġ// æī§è¡Į æĹ¶ éķ¿ ( æ¯ « ç§Ĵ ) ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġbegin Time ĊĊĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ æĹ¥å¿Ĺ ĊĠĠĠĠĠĠĠ Ġsave Sys Log ( point , Ġtime ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Sys Log ( join Point : ĠPro ceeding Join Point , Ġtime : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= Ġjoin Point . signature Ġas ĠMethod Signature ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġsignature . method ĊĊĠĠĠĠĠĠĠ Ġval Ġsys Log Ġ= ĠSys Log Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsyslog Ġ= Ġmethod . getAnnotation ( Sys Log :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( syslog Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨è§£ ä¸ĬçļĦ æııè¿° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsys Log . operation Ġ= Ġsyslog . value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ çļĦæĸ¹æ³ķ åĲį ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġjoin Point . target . java Class . name ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġsignature . name ĊĠĠĠĠĠĠĠ Ġsys Log . method Ġ= Ġ"$ className .$ methodName ()" ĊĊĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ çļĦåıĤæķ° ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġjoin Point . args ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠGson (). toJson ( args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsys Log . params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ request ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttp Context Utils . http Servlet Request ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® IP åľ°åĿĢ ĊĠĠĠĠĠĠĠ Ġsys Log . ip Ġ= ĠIP Utils . get Ip Addr ( request ) ĊĊĠĠĠĠĠĠĠ Ġ// çĶ¨æĪ·åĲį ĊĠĠĠĠĠĠĠ Ġsys Log . username Ġ= Ġ( Security Utils . get Subject (). principal Ġas ĠSys User Entity ). username ĊĊĠĠĠĠĠĠĠ Ġsys Log . time Ġ= Ġtime ĊĠĠĠĠĠĠĠ Ġsys Log . create Date Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ ç³»ç»Ł æĹ¥å¿Ĺ ĊĠĠĠĠĠĠĠ Ġsys Log Service . save ( sys Log ) ĊĠĠĠ Ġ} Ċ } Ċ