1: Logentity -Klasse
public class syslog { / *** / private Integer id; / ** Protokollbeschreibung*/ private Zeichenfolge Beschreibung; / ** Ausführungsmethode*/ private String -Methode; /** Protokolltyp 0: Betriebsprotokoll; 1: Ausnahmeprotokoll*/ private Ganzzahl logType; / ** IP -Adresse vom Client angefordert*/ private String Requestip; / ** Ausnahmecode*/ private String -Ausnahmecode; / ** Ausnahmedetails*/ private String ExceptionDetail; / ** Anforderungsparameter*/ private String -Parameter; / ** Operator*/ private String createBy; / ** Betriebszeit*/ private Zeichenfolge erstelltes kreiert; public Integer getid () {return id; } public void setId (Integer id) {this.id = id; } public String getDescription () {Rückgabe Beschreibung; } public void setDescription (String Beschreibung) {this.description = Beschreibung; } public String getMethod () {Rückgabemethode; } public void setMethod (String -Methode) {this.Method = Methode; } public Integer getlogtype () {return logType; } public void setlogtType (Integer logType) {this.logtType = logType; } public String getRequestip () {return requestip; } public void setRequestip (String requestip) {this.requestip = requestip; } public String getExceptionCode () {return exceptionCode; } public void setExceptionCode (String -ExceptionCode) {this.exceptionCode = exceptionCode; } public String getExceptionDetail () {return ExceptionDetail; } public void setExceptionDetail (String ExceptionDetail) {this.ExceptionDetail = ExceptionDetail; } public String getParams () {return params; } public void setParams (String -Params) {this.params = params; } public String getCreateby () {return createBy; } public void setCreateby (String createBy) {this.createby = createBy; } public String getCreatedate () {return creatingate; } public void setCreatedate (String erstelltesat) {this.createdate = createdate; }}2: Das von Maven verlangte Glas
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.7.4</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.7.4</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.1_3</version> </dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.5.RELEASE</version></dependency>
Das Projekt ist erforderlich, um JDK1.7 zu verwenden
3: SpringServlet-mvc.xml
<!-Proxy-Target-Class = "True" erzwingen Sie die Verwendung von CGGLIB-Proxy. Wenn FALSE, wählt Spring automatisch-> <AOP: Aspektj-Autopproxy Proxy-Target-Class = "True"/> aus
Das Hinzufügen von Proxy-Target-Klasse = "True" besteht darin, die Methoden im Controller abzufangen.
4: Definieren Sie den Abschnitt, ich schreibe hier haupt
Unten finden Sie die benutzerdefinierte Annotation
Importieren Sie java.lang.annotation.*; @target ({elementtype.parameter, elementtype.method}) @retention (retentionPolicy.runtime) @Documented public @Interface log {/ ** Die Art der Operation hinzufügen, z. B. die Operation **/ öffentliches String -OperationType () Default "; / ** Der spezifische Operation, der ausgeführt wird, wie z. B. Benutzer hinzufügenGesichtsschneide
importieren java.lang.reflect.method; import Java.text.SimpledateFormat; import Java.util.Arrays; import Java.util.date javax.annotation.resource; org.aspespectj.lang.joinpoint; import org.aspespectj.lang.proceedingjoinpoint; import org.aspespedj.lang.Annotation.after; org.aspespectj.lang.Annotation.aspep; import org.aspespectj.lang.Annotation org.springframework.web.context.request.requestContextHolder; Import org.springframework.web.Context.Request.ServletRequestattributes; Import com.gtcity.user.model.syslogog; com.gtCity.user.service.sysLogService;/** * @Author Panliang * @Version Creation Time: 2017-3-31 * @desc Point-Cut-Klasse * * */ @Aspekt @componentpublic class systemLogaspect {// Inject-Dienst, um die lautenprotokolle @resource private syslogSevice zu speichern. private statische endgültige Logger logger = loggerFactory.getLogger (SystemLogaspect. Klasse); // Controller -Schicht -Tangentenpunkt // Das erste * repräsentiert alle Rückgabewerttypen // Das zweite * repräsentiert alle Klassen // Das dritte * repräsentiert alle Methoden der Klasse // das letzte ... repräsentiert alle Parameter. @Pointcut ("Execution (* com.gtCity.Web.Controller ..*.* (..)") ") public void Controlleraspect () {} /**** @Author: panliang* @Time: 2017-3-31 2:22:16 PM* @PARAM-OPPOCT-OPPRAGE Die Operations-Operation. @Before("controllerAspect()") public void doBefore(JoinPoint joinPoint) {/* System.out.println("============================================================================== System.out.Info ("vor" + joinpoint); Session.getAttribute ("Benutzer"); joinpoint.getSignature (). method.getParameterTypes (); System.out.println ("========== Controller Pre-Notice start ========================). System.out.println ("Methode Beschreibung:" + OperationName); log.setDescription (OperationName); log.setExceptionDetail (null); System.out.println ("======== controller Pre-Notification End ====="); 2017-3-31 2:24:36 pm * @param joinPoint point-cut * @description: Exception notification is used to intercept and record exception log*/ @AfterThrowing(pointcut = "controllerAspect()", throwing="e") public void doAfterThrowing(JoinPoint joinPoint, Throwable e) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.GetRequestattributes ()) GetRequest (); String ip = request.getRemoteaddr (); joinpoint.getSignature (). method.getParameterTypes (); System.out.println ("=============== Ausnahmebenachrichtigung start======================================================================================= ======================================================================ieben ======================================================================ieben ======================================================================ieben System.out.println ("Ausnahmeinformationen:" + e.getMessage ()); System.out.println ("Anforderer:" + user.getUnername ()); log.setDescription (OperationName); "()")) log.setParams (Params); System.out.println("========Exception notification end=========); } catch (Exception ex) { //Record local exception logger.error("==Exception notification exception=="); logger.error("Exception information:{}", ex.getMessage()); } //==============Login local exception log ============ logger.Error ("Ausnahmemethode: {} Ausnahmecode: {} Ausnahmeinformationen: {} Parameter: {}", joinpoint.gettarget (). getClass (). getName () + joinpoint.getSignature ().5: Im Controller
/** * Suchen Sie das Kennwort basierend auf dem Benutzernamen, um festzustellen, ob der Benutzername und das Kennwort korrekt sind Skippage (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst IOException {modelAndView result = null; String username = request.getParameter ("E -Mail"); String password = Anfrage.GetParameter ("Passwort"); ModelAndView ("redirect: /login/dispacher_main.do");} else if (flag == 2) {// Der Benutzername existiert nicht result = new modelAndView ("redirect: /login/login.do? ERROCECODE = 1");} else {// // // // // IS IS IS IS IS IS ISSURE ERGEBNISSE = NEW = NEWE ModelAndView ("redirect: /login/login.do? ErrorCode = 2");} Rückgabeergebnis;}Für diejenigen, die über die anderen drei Benachrichtigungen informiert werden möchten, finden Sie in diesem Blog -Beitrag: Klicken Sie hier, um den Link zu öffnen
Wenn der Benutzer auf den Hintergrund zugreift, wird aufgezeichnet, ob es sich um eine normale Zugriffs- oder Fehlerdatenbank handelt.
Die obige AOP -Annotationsmethode zur Implementierung des globalen Protokollmanagements ist der gesamte Inhalt, den ich mit Ihnen geteilt habe. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.