Recentemente, o projeto precisa fazer uma função de registro, que eu uso o método de anotação da Spring AOP para implementar.
Crie anotações de log
pacote com.wyj.annotation; importar java.lang.annotation.documented; importar java.lang.annotation.ElementType; importar java.lang.annotation.retEntion; @annoTation.lang.annotation.retentionPolicy; import java.lang.annoTation.arget; * @Date: 26 de agosto de 2016 às 20:25:35 */@Target (ElementType.method) @retention (retentionpolicy.runtime) @documentedpublic @interface syslog {string action () padrão ""; // ação}Crie uma aula de notificação de faceta
Registre o nome do método, parâmetros e tempo gasto na operação, usando notificações surround
pacote com.wyj.aspect; importar java.lang.reflect.method; importar org.aspectj.lang.proecedingJoinPoint; importar org.aspectj.lang.annotation.AspectJ.Lang.AnTation.Ang.Notation.Annotation.aspect; importação. org.aspectj.lang.reflect.methodSignature; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.component; importação com.wyj.annotation.syslog; importância.wyj.entity.ysysyity com.wyj.service.sysLogservice;/** * Notificação da seção de log * * * @Author: Wangyuanjun * @Date: 26 de agosto de 2016 às 22:28:57 */ @aspecto @componentpublic class syslogaspect @autowired Private SysLogService; / ** * ponto de entrada */ @pointcut (" @anotação (com.wyj.annotation.syslog)") public void Pointcut () {}/ ** * Notificação em torno * * @param junção * @return * @Throws Throwable */ @Around ("PointCut ()") Public Objous (ProscondJOTIGN OSTENGONGONPOIGNOTENPONGONPOINTE * System.CurrentTimemillis (); // execute o objeto do método de destino resultado = junção.proeced (); // Tempo de execução (milissegundos) longo tempo = system.currenttimemillis () - inicia; // salvar o log savesyslog (junção, tempo); resultado de retorno; } / ** * Salvar o log * * @param junção * @param time * / private void SavesysLog (ProceedJoinPoint Junçãoint, Long Time) {MethodSignature Signature = (MethodSignature) junçãoPoint.getSignature (); Método método = assinatura.getMethod (); SysLogentity sysLogentity = new sysLogentity (); Syslog syslog = métod.getannotation (syslog.class); if (syslog! = null) {// Descrição na anotação sysLogentity.setOperation (syslog.action ()); } // obtenha o alvo className = junção.getTarget (). GetClass (). GetName (); // Obtenha o nome do método String MethodName = Signature.getName (); sysLogentity.setMethod (ClassName + "." + MethodName + "()"); // Objetivo do parâmetro solicitado [] args = junçãoPoint.getargs (); if (args! = null && args.length! = 0 && args [0]! = null) {sysLogentity.setParams (args [0] .toString ()); } sysLogentity.setTime (tempo); // Salvar o sistema de log syslogService.save (sysLogentity); }}Digitalize e inicie a anotação da AOP
Aplicação da anotação de log
Efeito
O método de configuração de anotação de aspecto da Spring APCETJ acima para implementar o gerenciamento de logs é todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.