# spring-boot-docker
**Repository Path**: j2cache/spring-boot-docker
## Basic Information
- **Project Name**: spring-boot-docker
- **Description**: 使用dockers部署spring-boot项目集成实例
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-03
- **Last Updated**: 2021-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# spring-boot-demo-log-aop
> 此 demo 主要是演示如何使用 aop 切面对请求进行日志记录,并且记录 UserAgent 信息。
## pom.xml
```xml
* 使用 aop 切面记录请求日志信息 *
* * @author yangkai.shen * @author chen qi * @date Created in 2018-10-01 22:05 */ @Aspect @Component @Slf4j public class AopLog { /** * 切入点 */ @Pointcut("execution(public * com.xkcoding.log.aop.controller.*Controller.*(..))") public void log() { } /** * 环绕操作 * * @param point 切入点 * @return 原方法返回值 * @throws Throwable 异常信息 */ @Around("log()") public Object aroundLog(ProceedingJoinPoint point) throws Throwable { // 开始打印请求日志 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = Objects.requireNonNull(attributes).getRequest(); // 打印请求相关参数 long startTime = System.currentTimeMillis(); Object result = point.proceed(); String header = request.getHeader("User-Agent"); UserAgent userAgent = UserAgent.parseUserAgentString(header); final Log l = Log.builder() .threadId(Long.toString(Thread.currentThread().getId())) .threadName(Thread.currentThread().getName()) .ip(getIp(request)) .url(request.getRequestURL().toString()) .classMethod(String.format("%s.%s", point.getSignature().getDeclaringTypeName(), point.getSignature().getName())) .httpMethod(request.getMethod()) .requestParams(getNameAndValue(point)) .result(result) .timeCost(System.currentTimeMillis() - startTime) .userAgent(header) .browser(userAgent.getBrowser().toString()) .os(userAgent.getOperatingSystem().toString()).build(); log.info("Request Log Info : {}", JSONUtil.toJsonStr(l)); return result; } /** * 获取方法参数名和参数值 * @param joinPoint * @return */ private Map* 测试 Controller *
* * @author yangkai.shen * @author chen qi * @date Created in 2018-10-01 22:10 */ @Slf4j @RestController public class TestController { /** * 测试方法 * * @param who 测试参数 * @return {@link } */ @GetMapping("/test") public Dict test(String who) { return Dict.create().set("who", StrUtil.isBlank(who) ? "me" : who); } /** * 测试post json方法 * @param map 请求的json参数 * @return {@link } */ @PostMapping("/testJson") public Dict testJson(@RequestBody Map