并且能查询用户的操作动作
要怎么做?Java怎么写?
35 个解决方案
#1
写数据库写文件
你是不会写数据库还是不会写文件?
你是不会写数据库还是不会写文件?
#2
都不会,我是才进公司做开发的,之前一直没做过这个
#3
spring aop
#4
我做的这个暂时还没用到框架,这个日志功能怎么写啊,我没写过,求源码
#5
数据插入难道不会吗。
#6
这个会,但是那个日志功能的Java源码怎么写啊,这个不会,没写过
#7
Spring AOP只能对Factory里取得的Bean的第一层方法有用,不能记录每一步的日志。
class CA {
public void foo() {
bar();
}
public void bar() {
}
}
例如:
CA ca = SpringFactory.getBean("BeanName", CA.class);
ca.foo()
Spring只能对foo做切面,不能对bar()做切面。
ca.bar() 能做bar() 做切面。
即使Spring AOP不能作用于类方法的嵌套调用。
#8
设计好表格 。。 重要的操作之后统一掉写好的插入日志方法呗。。
#9
求一个通用的日志记录Java源码
#10
log4j吧,不过每一步都要你自己记录
#11
用 spring aop 设置访问所有类的
都配置进去
然后调用 log4j
把用户信息以及调用类的名称,方法记录进去
写入日志文件
都配置进去
然后调用 log4j
把用户信息以及调用类的名称,方法记录进去
写入日志文件
#12
那怎么用log4j的日志记录功能啊,我是要把记录的操作日志信息保存到数据库的,数据库用的是SQL Server2008
#13
我想自己写一个通用的log类,里面有添加日志的静态方法(就是写插入一条记录到日志表),以后想添加一条日志的时候就直接调用该方法,这是我的思路,但是我没写过,不知道怎么写和调用,求源码
#15
log4j吧,不过每一步都要你自己记录
那怎么用log4j的日志记录功能啊,我是要把记录的操作日志信息保存到数据库的,数据库用的是SQL Server2008
Log4j写入数据库详解
这个我试过了,是能用,日志信息在控制台打印出来了,但是数据库中没有记录,我想知道是什么原因
#16
自己写的话 在你的底层方法中调用记录日志的公用方法即可
#17
写个过滤器 把每次操作的请求名,时间,操作人入库
#18
log4j配置好后,但是日志不能够输出到数据库中,数据库表中还是没有数据记录
我的配置如下:
log4j.properties log4j.rootLogger=INFO,stdout
log4j.logger.org.springframework.web.servlet=INFO,db
log4j.logger.org.springframework.beans.factory.xml=INFO
log4j.logger.com.neam.stum.user=INFO,db
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} %p [%c] - - <%m>%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n
########################
# JDBC Appender
#######################
#log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=1
log4j.appender.db.sqlname=log
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.db.URL=jdbc:jtds:SqlServer://192.168.12.2:1433;DatabaseName=boxserver
log4j.appender.db.user=sa
log4j.appender.db.password=123456
log4j.appender.db.sql=insert into WDZLOG (LogName,UserName,createTime,LogLevel,MSG) values ('%X{id}','%X{username}','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
我的配置如下:
log4j.properties log4j.rootLogger=INFO,stdout
log4j.logger.org.springframework.web.servlet=INFO,db
log4j.logger.org.springframework.beans.factory.xml=INFO
log4j.logger.com.neam.stum.user=INFO,db
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} %p [%c] - - <%m>%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n
########################
# JDBC Appender
#######################
#log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=1
log4j.appender.db.sqlname=log
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.db.URL=jdbc:jtds:SqlServer://192.168.12.2:1433;DatabaseName=boxserver
log4j.appender.db.user=sa
log4j.appender.db.password=123456
log4j.appender.db.sql=insert into WDZLOG (LogName,UserName,createTime,LogLevel,MSG) values ('%X{id}','%X{username}','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
#19
我那个我自己找出原因了,日志信息可以保存到数据库了,但是不知道为什么,没有用户名称,
这是我的数据库表创建SQL语句:
CREATE TABLE [dbo].[WDZLOG] (
WDZLOGID int IDENTITY (1, 1) NOT NULL ,
UserName varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--用户名称
CreateTime varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--产生时间
LogLevel varchar(20) COLLATE Chinese_PRC_CI_AS NULL ,--日志级别
MSG varchar(555) COLLATE Chinese_PRC_CI_AS NULL --日志信息
) ON [PRIMARY]
GO
现在是其他的都有数据,就是用户没有 ,现在是怎么得到当前登录的用户名
这是我的数据库表创建SQL语句:
CREATE TABLE [dbo].[WDZLOG] (
WDZLOGID int IDENTITY (1, 1) NOT NULL ,
UserName varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--用户名称
CreateTime varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--产生时间
LogLevel varchar(20) COLLATE Chinese_PRC_CI_AS NULL ,--日志级别
MSG varchar(555) COLLATE Chinese_PRC_CI_AS NULL --日志信息
) ON [PRIMARY]
GO
现在是其他的都有数据,就是用户没有 ,现在是怎么得到当前登录的用户名
#20
建议定一个注解,将需要记录日志的地方通过注解表示,并且配置当前操作相关信息,比如:新增用户,删除用户,更新用户。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
#21
有这样的设计思想,
1、在前端设计开发人员可以调用的日志存储方法,比如用户新增就开发人员调用设定好的方法进行保存;
2、在后端可以在Action层中设定父类,该父类有add方法,设计beforeAdd和afterAdd在beforeAdd方法中添加日志;
3、使用aop技术,当然比较高端
1、在前端设计开发人员可以调用的日志存储方法,比如用户新增就开发人员调用设定好的方法进行保存;
2、在后端可以在Action层中设定父类,该父类有add方法,设计beforeAdd和afterAdd在beforeAdd方法中添加日志;
3、使用aop技术,当然比较高端
#22
谢谢各位!我的搞定了,我用的是log4j的,日志信息可以保存到数据库,但是现在有个问题,我测试用户登录记录,但是在数据库中用户名保存的却不是登录的用户名,这是为什么,帮忙看一下,谢谢!
这是我的拦截器代码:
private final static double DEFAULT_USERID= Math.random()*100000.0;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
String username= (String)session.getAttribute("user");
if (username==null){
MDC.put("username",DEFAULT_USERID);
} else {
MDC.put("username",username);
}
}
System.out.println(MDC.get("username"));
//logger.info("test for MDC.");
chain.doFilter(request, response);
}
这是我的拦截器代码:
private final static double DEFAULT_USERID= Math.random()*100000.0;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
String username= (String)session.getAttribute("user");
if (username==null){
MDC.put("username",DEFAULT_USERID);
} else {
MDC.put("username",username);
}
}
System.out.println(MDC.get("username"));
//logger.info("test for MDC.");
chain.doFilter(request, response);
}
#23
session丢失了 在每一个用到session的地方都保存一次用户session就OK了
#24
session丢失了 在每一个用到session的地方都保存一次用户session就OK了
现在的问题是程序第一遍运行,我用wing登录进去了,但是数据库表中保存的登录用户名却是一个随机数,而不是wing
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
UserVO user=(UserVO)session.getAttribute("user");
if (user != null){
MDC.put("username",user.getUsername());
} else {
MDC.put("username",DEFAULT_USERID);
}
}
//logger.info("test for MDC.");
System.out.println(MDC.get("username"));
chain.doFilter(request, response);
}
那个MDC的username的value没有更新就存到数据库了,
#25
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
#26
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
#27
我们以前公司是在每个需要记录的方法前面加个注解,注解的定义也是自己写的,其实也就是使用Spring AOP来实现的
#28
看需要记录的行为细化到什么程度 如果仅仅记录哪些用户 什么时间做了什么事 出现什么异常 写个拦截器即可
如果还要记录行为的具体执行过程 这个只能靠log4j了 比较麻烦 也得设计
如果还要记录行为的具体执行过程 这个只能靠log4j了 比较麻烦 也得设计
#29
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
这个我没有参与……我进了另一个项目组……
#30
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
这个我没有参与……我进了另一个项目组……
好吧,虽然没有我想要的,不过还是谢谢你
#31
因为你登陆的时候,登陆之前,就先拦截了登陆请求,这时候你还没有登陆成功,session里面的username还是null,所以这时候会执行“MDC.put("username",DEFAULT_USERID)”,执行完了才会接着进入登陆方法,然后才是登陆成功。
解决办法:拦截的时候判断一下,如果是登陆请求,则不拦截。
解决办法:拦截的时候判断一下,如果是登陆请求,则不拦截。
#32
怎么DEBUG啊,新手求指教
#33
建议定一个注解,将需要记录日志的地方通过注解表示,并且配置当前操作相关信息,比如:新增用户,删除用户,更新用户。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
请问有这个异步执行与aop相结合的demo嘛?
#34
楼主,你加表字段了没?你之前不是没有用户id么,你加了没有?
#35
怎么写的啊?教教我啊,技术大牛
#1
写数据库写文件
你是不会写数据库还是不会写文件?
你是不会写数据库还是不会写文件?
#2
写数据库写文件
你是不会写数据库还是不会写文件?
都不会,我是才进公司做开发的,之前一直没做过这个
#3
spring aop
#4
spring aop
我做的这个暂时还没用到框架,这个日志功能怎么写啊,我没写过,求源码
#5
数据插入难道不会吗。
#6
数据插入难道不会吗。
这个会,但是那个日志功能的Java源码怎么写啊,这个不会,没写过
#7
spring aop
Spring AOP只能对Factory里取得的Bean的第一层方法有用,不能记录每一步的日志。
class CA {
public void foo() {
bar();
}
public void bar() {
}
}
例如:
CA ca = SpringFactory.getBean("BeanName", CA.class);
ca.foo()
Spring只能对foo做切面,不能对bar()做切面。
ca.bar() 能做bar() 做切面。
即使Spring AOP不能作用于类方法的嵌套调用。
#8
设计好表格 。。 重要的操作之后统一掉写好的插入日志方法呗。。
#9
求一个通用的日志记录Java源码
#10
log4j吧,不过每一步都要你自己记录
#11
用 spring aop 设置访问所有类的
都配置进去
然后调用 log4j
把用户信息以及调用类的名称,方法记录进去
写入日志文件
都配置进去
然后调用 log4j
把用户信息以及调用类的名称,方法记录进去
写入日志文件
#12
log4j吧,不过每一步都要你自己记录
那怎么用log4j的日志记录功能啊,我是要把记录的操作日志信息保存到数据库的,数据库用的是SQL Server2008
#13
我想自己写一个通用的log类,里面有添加日志的静态方法(就是写插入一条记录到日志表),以后想添加一条日志的时候就直接调用该方法,这是我的思路,但是我没写过,不知道怎么写和调用,求源码
#14
#15
log4j吧,不过每一步都要你自己记录
那怎么用log4j的日志记录功能啊,我是要把记录的操作日志信息保存到数据库的,数据库用的是SQL Server2008
Log4j写入数据库详解
这个我试过了,是能用,日志信息在控制台打印出来了,但是数据库中没有记录,我想知道是什么原因
#16
自己写的话 在你的底层方法中调用记录日志的公用方法即可
#17
写个过滤器 把每次操作的请求名,时间,操作人入库
#18
log4j配置好后,但是日志不能够输出到数据库中,数据库表中还是没有数据记录
我的配置如下:
log4j.properties log4j.rootLogger=INFO,stdout
log4j.logger.org.springframework.web.servlet=INFO,db
log4j.logger.org.springframework.beans.factory.xml=INFO
log4j.logger.com.neam.stum.user=INFO,db
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} %p [%c] - - <%m>%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n
########################
# JDBC Appender
#######################
#log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=1
log4j.appender.db.sqlname=log
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.db.URL=jdbc:jtds:SqlServer://192.168.12.2:1433;DatabaseName=boxserver
log4j.appender.db.user=sa
log4j.appender.db.password=123456
log4j.appender.db.sql=insert into WDZLOG (LogName,UserName,createTime,LogLevel,MSG) values ('%X{id}','%X{username}','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
我的配置如下:
log4j.properties log4j.rootLogger=INFO,stdout
log4j.logger.org.springframework.web.servlet=INFO,db
log4j.logger.org.springframework.beans.factory.xml=INFO
log4j.logger.com.neam.stum.user=INFO,db
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} %p [%c] - - <%m>%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n
########################
# JDBC Appender
#######################
#log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=1
log4j.appender.db.sqlname=log
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.db.URL=jdbc:jtds:SqlServer://192.168.12.2:1433;DatabaseName=boxserver
log4j.appender.db.user=sa
log4j.appender.db.password=123456
log4j.appender.db.sql=insert into WDZLOG (LogName,UserName,createTime,LogLevel,MSG) values ('%X{id}','%X{username}','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
#19
我那个我自己找出原因了,日志信息可以保存到数据库了,但是不知道为什么,没有用户名称,
这是我的数据库表创建SQL语句:
CREATE TABLE [dbo].[WDZLOG] (
WDZLOGID int IDENTITY (1, 1) NOT NULL ,
UserName varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--用户名称
CreateTime varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--产生时间
LogLevel varchar(20) COLLATE Chinese_PRC_CI_AS NULL ,--日志级别
MSG varchar(555) COLLATE Chinese_PRC_CI_AS NULL --日志信息
) ON [PRIMARY]
GO
现在是其他的都有数据,就是用户没有 ,现在是怎么得到当前登录的用户名
这是我的数据库表创建SQL语句:
CREATE TABLE [dbo].[WDZLOG] (
WDZLOGID int IDENTITY (1, 1) NOT NULL ,
UserName varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--用户名称
CreateTime varchar(255) COLLATE Chinese_PRC_CI_AS NULL ,--产生时间
LogLevel varchar(20) COLLATE Chinese_PRC_CI_AS NULL ,--日志级别
MSG varchar(555) COLLATE Chinese_PRC_CI_AS NULL --日志信息
) ON [PRIMARY]
GO
现在是其他的都有数据,就是用户没有 ,现在是怎么得到当前登录的用户名
#20
建议定一个注解,将需要记录日志的地方通过注解表示,并且配置当前操作相关信息,比如:新增用户,删除用户,更新用户。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
#21
有这样的设计思想,
1、在前端设计开发人员可以调用的日志存储方法,比如用户新增就开发人员调用设定好的方法进行保存;
2、在后端可以在Action层中设定父类,该父类有add方法,设计beforeAdd和afterAdd在beforeAdd方法中添加日志;
3、使用aop技术,当然比较高端
1、在前端设计开发人员可以调用的日志存储方法,比如用户新增就开发人员调用设定好的方法进行保存;
2、在后端可以在Action层中设定父类,该父类有add方法,设计beforeAdd和afterAdd在beforeAdd方法中添加日志;
3、使用aop技术,当然比较高端
#22
谢谢各位!我的搞定了,我用的是log4j的,日志信息可以保存到数据库,但是现在有个问题,我测试用户登录记录,但是在数据库中用户名保存的却不是登录的用户名,这是为什么,帮忙看一下,谢谢!
这是我的拦截器代码:
private final static double DEFAULT_USERID= Math.random()*100000.0;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
String username= (String)session.getAttribute("user");
if (username==null){
MDC.put("username",DEFAULT_USERID);
} else {
MDC.put("username",username);
}
}
System.out.println(MDC.get("username"));
//logger.info("test for MDC.");
chain.doFilter(request, response);
}
这是我的拦截器代码:
private final static double DEFAULT_USERID= Math.random()*100000.0;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
String username= (String)session.getAttribute("user");
if (username==null){
MDC.put("username",DEFAULT_USERID);
} else {
MDC.put("username",username);
}
}
System.out.println(MDC.get("username"));
//logger.info("test for MDC.");
chain.doFilter(request, response);
}
#23
session丢失了 在每一个用到session的地方都保存一次用户session就OK了
#24
session丢失了 在每一个用到session的地方都保存一次用户session就OK了
现在的问题是程序第一遍运行,我用wing登录进去了,但是数据库表中保存的登录用户名却是一个随机数,而不是wing
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session= req.getSession();
if (session==null){
MDC.put("username",DEFAULT_USERID);
}
else{
UserVO user=(UserVO)session.getAttribute("user");
if (user != null){
MDC.put("username",user.getUsername());
} else {
MDC.put("username",DEFAULT_USERID);
}
}
//logger.info("test for MDC.");
System.out.println(MDC.get("username"));
chain.doFilter(request, response);
}
那个MDC的username的value没有更新就存到数据库了,
#25
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
#26
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
#27
我们以前公司是在每个需要记录的方法前面加个注解,注解的定义也是自己写的,其实也就是使用Spring AOP来实现的
#28
看需要记录的行为细化到什么程度 如果仅仅记录哪些用户 什么时间做了什么事 出现什么异常 写个拦截器即可
如果还要记录行为的具体执行过程 这个只能靠log4j了 比较麻烦 也得设计
如果还要记录行为的具体执行过程 这个只能靠log4j了 比较麻烦 也得设计
#29
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
这个我没有参与……我进了另一个项目组……
#30
前几天客户提过这个,是做大数据的。从登录到退出,当时构思的是写进数据库里。
然后呢?你是怎么做的?
这个我没有参与……我进了另一个项目组……
好吧,虽然没有我想要的,不过还是谢谢你
#31
因为你登陆的时候,登陆之前,就先拦截了登陆请求,这时候你还没有登陆成功,session里面的username还是null,所以这时候会执行“MDC.put("username",DEFAULT_USERID)”,执行完了才会接着进入登陆方法,然后才是登陆成功。
解决办法:拦截的时候判断一下,如果是登陆请求,则不拦截。
解决办法:拦截的时候判断一下,如果是登陆请求,则不拦截。
#32
怎么DEBUG啊,新手求指教
#33
建议定一个注解,将需要记录日志的地方通过注解表示,并且配置当前操作相关信息,比如:新增用户,删除用户,更新用户。
然后做一个拦截器或者AOP,读取拦截方法的日志注解,并且读取配置的注解信息,如果你要记录请求的详细信息,可以把所有的请求参数都保存到数据库,为了确保日志记录不印象正常的业务流程或者执行效率,可以考虑采取异步执行的方式(具体可以看看jdk的Executor),这样就可以在不印象正常业务的情况下记录日志。
请问有这个异步执行与aop相结合的demo嘛?
#34
楼主,你加表字段了没?你之前不是没有用户id么,你加了没有?
#35
怎么写的啊?教教我啊,技术大牛