SpringBoot通过AOP实现系统日志记录(一)-Controller层日志监控(包括系统日志监控)

systemLogDO.setTotalTime(String.valueOf(totalTime));

systemLogDO.setGmtCreateUser(userInfo.getUserName());

systemLogDO.setGmtModifiedUser(userInfo.getUserName());

systemLogDO.setIsDelete(0);

systemLogDAO.insert(systemLogDO);

return result;

}

}

5、IPUtil工具类

package com.gcloud.common;

import javax.servlet.http.HttpServletRequest;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.net.UnknownHostException;

import java.util.Enumeration;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

  • @Description: IP工具类

  • @Author: zhangzhixiang

  • @CreateDate: 2018/11/08 16:08:54

  • @Version: 1.0

*/

public class IPUtil {

/**

  • 检查IP是否合法

  • @param ip

  • @return

*/

public static boolean ipValid(String ip) {

String regex0 = “(2[0-4]\d)” + “|(25[0-5])”;

String regex1 = “1\d{2}”;

String regex2 = “[1-9]\d”;

String regex3 = “\d”;

String regex = “(” + regex0 + “)|(” + regex1 + “)|(” + regex2 + “)|(” + regex3 + “)”;

regex = “(” + regex + “).(” + regex + “).(” + regex + “).(” + regex + “)”;

Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(ip);

return m.matches();

}

/**

  • 获取本地ip 适合windows与linux

  • @return

*/

public static String getLocalIP() {

String localIP = “127.0.0.1”;

try {

Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();

while (netInterfaces.hasMoreElements()) {

NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();

InetAddress ip = ni.getInetAddresses().nextElement();

if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(“:”) == -1) {

localIP = ip.getHostAddress();

break;

}

}

} catch (Exception e) {

try {

localIP = InetAddress.getLocalHost().getHostAddress();

} catch (UnknownHostException e1) {

e1.printStackTrace();

}

}

return localIP;

}

/**

  • 获取客户机的ip地址

  • @param request

  • @return

*/

public static String getClientIp(HttpServletRequest request) {

String ip = request.getHeader(“x-forwarded-for”);

if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {

ip = request.getHeader(“Proxy-Client-IP”);

}

if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {

ip = request.getHeader(“WL-Proxy-Client-IP”);

}

if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {

ip = request.getHeader(“http_client_ip”);

}

if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {

ip = request.getHeader(“HTTP_X_FORWARDED_FOR”);

}

// 如果是多级代理,那么取第一个ip为客户ip

if (ip != null && ip.indexOf(“,”) != -1) {

ip = ip.substring(ip.lastIndexOf(“,”) + 1, ip.length()).trim();

}

return ip;

}

/**

  • 把ip转化为整数

  • @param ip

  • @return

*/

public static long translateIP2Int(String ip){

String[] intArr = ip.split(“\.”);

int[] ipInt = new int[intArr.length];

for (int i = 0; i <intArr.length ; i++) {

ipInt[i] = new Integer(intArr[i]).intValue();

}

return ipInt[0] * 256 * 256 * 256 + + ipInt[1] * 256 * 256 + ipInt[2] * 256 + ipInt[3];

}

public static void main(String[] args) {

System.out.println(getLocalIP());

}

}

6、结果返回实体类

public class ResponseResult implements Serializable {

private static final long serialVersionUID = 6054052582421291408L;

private String message;

private Object data;

private int code;

private boolean success;

private Long total;

public ResponseResult(){}

public ResponseResult(boolean success, Object data) {

this.success = success;

this.data = data;

}

public ResponseResult(boolean success, String message, Object data) {

this.success = success;

this.message = message;

this.data = data;

}

public String getMessage() {

return message;

}

public ResponseResult setMessage(String message) {

this.message = message;

return this;

}

public Object getData() {

return data;

}

public ResponseResult setData(Object data) {

this.data = data;

return this;

}

public boolean getSuccess() {

return success;

}

public ResponseResult setSuccess(boolean success) {

this.success = success;

return this;

}

public int getCode() {

return code;

}

public ResponseResult setCode(int code) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

学习视频:

大厂面试真题:

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

学习视频:

[外链图片转存中…(img-yMCih049-1712080082586)]

大厂面试真题:

[外链图片转存中…(img-UtJSJPRc-1712080082587)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值