package Ġcom . j ch ang h ong . config Ċ Ċ import Ġcom . j ch ang h ong . mapper . Log Mapper Ċ import Ġcom . j ch ang h ong . vo . Log Info Ċ import Ġcom . j ch ang h ong . vo . User Ċ import Ġorg . apache . logging . log 4 j . core . config . Order Ċ import Ġorg . aspect j . lang . Join Point Ċ import Ġorg . aspect j . lang . annotation . After Throw ing Ċ import Ġorg . aspect j . lang . annotation . Aspect Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . context . request . RequestContext Holder Ċ import Ġorg . springframework . web . context . request . Servlet Request Attributes Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠDo Ċ Ġ* Ġ* Ċ Ġ* Ġ@ package Ġcom . e um ji . z blog . config Ċ Ġ* Ġ* Ċ Ġ* Ġ@ name ĠLogger Aspect Ċ Ġ* Ġ* Ċ Ġ* Ġ@ date Ġ 2 0 1 7 / 4 / 1 0 Ċ Ġ* Ġ* Ċ Ġ* Ġ@ time Ġ 1 8 : 0 8 Ċ Ġ*/ Ċ @ Aspect Ċ @ Component Ċ @ Order ( 5 ) Ċ class ĠLogger Aspect Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġprivate Ġvar Ġlog Mapper : ĠLog Mapper ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Logger Aspect :: class . java ) ĊĊĊĠĠĠ Ġ@ After Throw ing ( point cut Ġ= Ġ" execution (* Ġcom . j ch ang h ong . controller .* .* (.. )) ", Ġthrowing Ġ= Ġ" e ") ĊĠĠĠ Ġfun Ġafter Throw ing ( join Point : ĠJoin Point , Ġe : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( e . message ) ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠLog Info () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Attributes Ġ= ĠRequest Context Holder . current Request Attributes () Ġas ĠServlet Request Attributes ĊĠĠĠĠĠĠĠ Ġif Ġ( request Attributes Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Attributes . request ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġrequest . session . getAttribute (" user ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull && user Ġis ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . userId Ġ= user . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Attributes . request ĊĠĠĠĠĠĠĠ Ġlog . ip Ġ= Ġrequest . remote Addr ĊĠĠĠĠĠĠĠ Ġlog . method Ġ= Ġrequest . method ĊĠĠĠĠĠĠĠ Ġlog . url Ġ= Ġrequest . request URL . toString () ĊĠĠĠĠĠĠĠ Ġlog . args Ġ= ĠArrays . toString ( join Point . args ) ĊĠĠĠĠĠĠĠ Ġlog . class Method Ġ= Ġjoin Point . signature . decl aring TypeName Ġ+ Ġ"." Ġ+ Ġjoin Point . signature . name ĊĠĠĠĠĠĠĠ Ġlog . exception Ġ= Ġe . message Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġlog . operate Time Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġlogger . info ( log . toString ()) ĊĠĠĠĠĠĠĠ Ġlog Mapper . save ( log ) ĊĠĠĠ Ġ} Ċ } Ċ