Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
map-parent
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常超
map-parent
Commits
f9d58b03
Commit
f9d58b03
authored
Mar 09, 2021
by
cc150520900118
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
日志监控aop
parent
85fcb26d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
239 additions
and
0 deletions
+239
-0
common/common_utils/src/main/java/com/founder/commonutils/publicEntity/Receiving.java
+0
-0
common/pom.xml
+11
-0
common/service_base/src/main/java/com/founder/servicebase/logs/OperLog.java
+15
-0
common/service_base/src/main/java/com/founder/servicebase/logs/OperationType.java
+36
-0
common/service_base/src/main/java/com/founder/servicebase/logs/SysLog.java
+36
-0
common/service_base/src/main/java/com/founder/servicebase/logs/SysLogAspect.java
+141
-0
No files found.
common/common_utils/src/main/java/com/founder/commonutils/publicEntity/Receiving.java
View file @
f9d58b03
This diff is collapsed.
Click to expand it.
common/pom.xml
View file @
f9d58b03
...
...
@@ -21,6 +21,17 @@
<artifactId>
spring-boot-starter-web
</artifactId>
<scope>
provided
</scope>
</dependency>
<!--spring切面aop依赖-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-aop
</artifactId>
</dependency>
<!-- json解析依赖 -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.47
</version>
</dependency>
<!--mybatis-plus-->
<dependency>
...
...
common/service_base/src/main/java/com/founder/servicebase/logs/OperLog.java
0 → 100644
View file @
f9d58b03
package
com
.
founder
.
servicebase
.
logs
;
import
java.lang.annotation.*
;
/**
* 自定义注解类 OperLog
* Created by LMD on 2019/3/22.
*/
@Target
(
ElementType
.
METHOD
)
//注解放置的目标位置,METHOD是可注解在方法级别上
@Retention
(
RetentionPolicy
.
RUNTIME
)
//注解在哪个阶段执行
@Documented
//生成文档
public
@interface
OperLog
{
String
message
();
// 介绍
String
operation
();
// 日志类型
}
common/service_base/src/main/java/com/founder/servicebase/logs/OperationType.java
0 → 100644
View file @
f9d58b03
package
com
.
founder
.
servicebase
.
logs
;
/**
* 操作类型类 OperationType
* Created by LMD on 2019/3/22.
*/
public
class
OperationType
{
/**
* 添加
*/
public
static
final
String
ADD
=
"ADD"
;
/**
* 删除
*/
public
static
final
String
DELETE
=
"DELETE"
;
/**
* 更新
*/
public
static
final
String
UPDATE
=
"UPDATE"
;
/**
* 查询
*/
public
static
final
String
QUERY
=
"QUERY"
;
/**
* 登录
*/
public
static
final
String
LOGIN
=
"LOGIN"
;
/**
* 退出登录
*/
public
static
final
String
LOGOUT
=
"LOGOUT"
;
}
common/service_base/src/main/java/com/founder/servicebase/logs/SysLog.java
0 → 100644
View file @
f9d58b03
package
com
.
founder
.
servicebase
.
logs
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 日志实体类 SysLog
* Created by LMD on 2019/3/22.
*/
@Data
public
class
SysLog
implements
Serializable
{
private
Long
id
;
//
private
String
userId
;
// 操作用户 ID
private
String
message
;
// 消息
private
String
operation
;
// 日志类型
private
String
method
;
// 请求方法
private
String
params
;
// 请求参数
private
String
ip
;
// 请求IP
private
String
createDate
;
// 请求时间
private
Long
totalTime
;
//总耗时长(毫秒)
private
String
content
;
// 返回值
//添加set和get方法
}
\ No newline at end of file
common/service_base/src/main/java/com/founder/servicebase/logs/SysLogAspect.java
0 → 100644
View file @
f9d58b03
package
com
.
founder
.
servicebase
.
logs
;
import
lombok.SneakyThrows
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.CodeSignature
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
*
* 系统日志:切面处理类
*
* Created by LMD on 2019/3/22.
*/
@Aspect
@Component
public
class
SysLogAspect
{
private
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
SysLogAspect
.
class
);
//定义切点 @Pointcut
//在注解的位置切入代码
@Pointcut
(
"@annotation( com.founder.servicebase.logs.OperLog)"
)
public
void
logPoinCut
()
{
}
//@Around:环绕通知
@SneakyThrows
@Around
(
"logPoinCut()"
)
public
Object
saveSysLog
(
ProceedingJoinPoint
proceedingJoinPoint
)
{
System
.
out
.
println
(
"环绕通知开始。。。。。"
);
//保存日志
SysLog
sysLog
=
new
SysLog
();
//从切面织入点处通过反射机制获取织入点处的方法
MethodSignature
signature
=
(
MethodSignature
)
proceedingJoinPoint
.
getSignature
();
//获取切入点所在的方法
Method
method
=
signature
.
getMethod
();
//获取操作
OperLog
myLog
=
method
.
getAnnotation
(
OperLog
.
class
);
if
(
myLog
!=
null
)
{
String
value
=
myLog
.
message
();
sysLog
.
setMessage
(
value
);
//保存获取的操作
}
//获取请求的类名
String
className
=
proceedingJoinPoint
.
getTarget
().
getClass
().
getName
();
//获取请求的方法名
String
methodName
=
method
.
getName
();
sysLog
.
setMethod
(
className
+
"."
+
methodName
);
//请求参数 和对应的值
Map
<
String
,
Object
>
map
=
getNameAndValue
(
proceedingJoinPoint
);
sysLog
.
setParams
(
map
.
toString
());
//请求时间
Date
date
=
new
Date
();
String
pattern
=
"yyyy-MM-dd HH:mm:ss"
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
pattern
);
sysLog
.
setCreateDate
(
simpleDateFormat
.
format
(
date
));
//获取用户名
//获取用户ip地址
// 接收到请求,记录请求内容
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
// 记录下请求内容
LOG
.
info
(
"URL : "
+
request
.
getRequestURL
().
toString
());
LOG
.
info
(
"HTTP_METHOD : "
+
request
.
getMethod
());
LOG
.
info
(
"IP : "
+
request
.
getRemoteAddr
());
sysLog
.
setIp
(
request
.
getRemoteAddr
());
//开始调用时间
// 计时并调用目标函数
long
start
=
System
.
currentTimeMillis
();
Long
time
=
System
.
currentTimeMillis
()
-
start
;
sysLog
.
setTotalTime
(
time
);
try
{
Object
result
=
proceedingJoinPoint
.
proceed
();
if
(!
StringUtils
.
isEmpty
(
result
)){
sysLog
.
setContent
(
result
.
toString
());
}
}
catch
(
Throwable
throwable
)
{
String
erro
=
""
;
throwable
.
printStackTrace
();
erro
=
log
(
throwable
);
sysLog
.
setContent
(
erro
);
}
System
.
out
.
print
(
"保存数据库=="
+
sysLog
.
toString
());
//调用service保存SysLog实体类到数据库
//sysLogService.save(sysLog);
return
null
;
}
/**
* 获取参数Map集合
* @param joinPoint
* @return
*/
Map
<
String
,
Object
>
getNameAndValue
(
ProceedingJoinPoint
joinPoint
)
{
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
Object
[]
paramValues
=
joinPoint
.
getArgs
();
String
[]
paramNames
=
((
CodeSignature
)
joinPoint
.
getSignature
()).
getParameterNames
();
for
(
int
i
=
0
;
i
<
paramNames
.
length
;
i
++)
{
param
.
put
(
paramNames
[
i
],
paramValues
[
i
]);
}
return
param
;
}
/**
* @Desc: 异常打印日志 ,提供给打印非正常异常
* @Author HealerJean
* @Date 2018/8/21 下午6:41.
*/
public
static
String
log
(
Throwable
e
){
StackTraceElement
s
=
e
.
getStackTrace
()[
0
];
//数组长度为 1
String
content
=
(
"\n\n-----------------"
+
"\n报错文件名:"
+
s
.
getFileName
()
+
"\n报错的类:"
+
s
.
getClassName
()
+
"\n报错方法::"
+
s
.
getMethodName
()
+
"\n报错的行:"
+
s
.
getLineNumber
()
+
"\n报错的message:"
+
e
.
getMessage
()
+
"\n------------------\n\n"
);
System
.
out
.
println
(
"111111111111111"
+
content
);
return
content
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment