Skip to content

Commit

Permalink
close #26 add log in AOP and start to it
Browse files Browse the repository at this point in the history
  • Loading branch information
顾鲍尔 authored and 顾鲍尔 committed Jul 3, 2017
1 parent 0227297 commit a5eb49e
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 1 deletion.
5 changes: 5 additions & 0 deletions pom.xml
Expand Up @@ -60,6 +60,11 @@
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
Expand Down
67 changes: 67 additions & 0 deletions src/main/java/com/boylegu/springboot_vue/config/WebLogAspect.java
@@ -0,0 +1,67 @@
package com.boylegu.springboot_vue.config;

import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

/**
/**
* Created by gubaoer on 17/7/3.
*/


@Aspect
@Order(5)
@Component
public class WebLogAspect {

private Logger logger = Logger.getLogger(getClass());

ThreadLocal<Long> startTime = new ThreadLocal<>();

@Pointcut("execution(public * com.boylegu.springboot_vue.controller..*.*(..))")
public void webLog(){}

@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {

startTime.set(System.currentTimeMillis());

ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

HttpServletRequest request = attributes.getRequest();

logger.info("URL : " + request.getRequestURL().toString());

logger.info("HTTP_METHOD : " + request.getMethod());

logger.info("IP : " + request.getRemoteAddr());

logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());

logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));

}

@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {


logger.info("RESPONSE : " + ret);

logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get()));
}


}

4 changes: 4 additions & 0 deletions src/main/java/com/boylegu/springboot_vue/dao/ErrorInfo.java
Expand Up @@ -7,11 +7,15 @@
public class ErrorInfo<T> {

public static final Integer OK = 0;

public static final Integer ERROR = 100;

private Integer code;

private String message;

private String url;

private T data;

public String getUrl() {
Expand Down
Expand Up @@ -6,7 +6,9 @@


public class ProjException extends Exception {

public ProjException(String message) {
super(message);
}

}
Expand Up @@ -17,21 +17,32 @@ public class ProjExceptionHandler {

@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {

ModelAndView mav = new ModelAndView();

mav.addObject("exception", e);

mav.addObject("url", req.getRequestURL());

mav.setViewName("error");

return mav;
}

@ExceptionHandler(value = ProjException.class)
@ResponseBody
public ErrorInfo<String> jsonErrorHandler(HttpServletRequest req, ProjException e) throws Exception {

ErrorInfo<String> r = new ErrorInfo<>();

r.setMessage(e.getMessage());

r.setCode(ErrorInfo.ERROR);

r.setData("Some Data");

r.setUrl(req.getRequestURL().toString());

return r;
}

Expand Down
33 changes: 32 additions & 1 deletion src/main/resources/application.properties
Expand Up @@ -7,4 +7,35 @@ spring.datasource.driver-class-name = org.sqlite.JDBC
spring.jpa.database-platform=com.boylegu.springboot_vue.config.SQLiteDialect
spring.jpa.show-sql= true

com.boylegu.paginatio.max-per-page=7
com.boylegu.paginatio.max-per-page=7

# Log Config
log4j.rootCategory=INFO, stdout, file, errorfile
log4j.category.com.didispace=DEBUG, didifile
log4j.logger.error=errorfile

# Log Console input
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# error log input
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=logs/error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.didifile.file=logs/gubaoer.log
log4j.appender.didifile.DatePattern='.'yyyy-MM-dd
log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

0 comments on commit a5eb49e

Please sign in to comment.