log4j写入数据库

J2EE 码拜 9年前 (2015-04-12) 1755次浏览 0个评论

–数据库中新建的日志表
CREATE TABLE [boxserver].[dbo].[Loginformation] (  
    [WDZLOGID] [int] IDENTITY (1, 1) PRIMARY KEY ,
    [userId] INT NOT NULL,–用户ID
    [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,–日志信息
    [user_loginip] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL–IP地址
)
GO 
–下面是过滤器主要代码
public class LogResFilter implements Filter {
private final static double DEFAULT_USERID = Math.random() * 100000.0;

public void destroy() {
// TODO Auto-generated method stub

}

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(“userId”, DEFAULT_USERID);
} else {
UserVO vo = (UserVO) session.getAttribute(“user”);
if (vo == null) {
MDC.put(“userId”, DEFAULT_USERID);
MDC.put(“username”, DEFAULT_USERID);
} else {
MDC.put(“userId”, vo.getUsername());
MDC.put(“username”, vo.getUsername());
}
}
chain.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}
–这里是log4j.properties配置文件
#数据库输出 
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender 

#设置缓存大小,就是当有10条日志信息是才往数据库插一次 
log4j.appender.db.BufferSize=10
  
log4j.appender.db.sqlname=log  
  
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
                        
log4j.appender.db.URL=jdbc:sqlserver://192.168.12.2:1433;DatabaseName=boxserver  
  
log4j.appender.db.user=sa  
  
log4j.appender.db.password=123456  
  
log4j.appender.db.sql=insert into Loginformation(userId,username,createTime,LogLevel,MSG,user_loginip) values (“”%X{userId}””,””%X{username}””,””%d{yyyy-MM-dd HH\:mm\:ss}””,””%X{LogLevel}””,””%X{MSG}””,””%X{user_loginip}””)  
  
log4j.appender.db.layout=org.apache.log4j.PatternLayout 
#%m表示你写入的日志信息

但我一运行程序就报错
log4j:ERROR Failed to excute sql(这句我在网上查说是配置文件中的sql语句有问题)
com.microsoft.sqlserver.jdbc.SQLServerException: 用户 “”sa  “” 登录失败。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2529)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1905)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1893)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1045)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at org.apache.log4j.jdbc.JDBCAppender.getConnection(JDBCAppender.java:252)
at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:215)
at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:290)
at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:186)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.info(Category.java:666)
at servlet.LoginValidate.doPost(LoginValidate.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.justeasy.filter.LogResFilter.doFilter(LogResFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
日志信息插入不到数据库中,望指导!!!

log4j写入数据库
10分
com.microsoft.sqlserver.jdbc.SQLServerException: 用户 “”sa  “” 登录失败。  数据库登陆都没成功,用户名、密码检查下
log4j写入数据库
–在需要的地方引用日志对象,不知道是不是这样写
public class LoginValidate extends HttpServlet {
 private static Logger logger = Logger.getLogger(LoginValidate.class);  //日志文件(请看这句代码)
/**
 * The doGet method of the servlet. <br>
 * 
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request
 *            the request send by the client to the server
 * @param response
 *            the response send by the server to the client
 * @throws ServletException
 *             if an error occurred
 * @throws IOException
 *             if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);

}

/**
 * The doPost method of the servlet. <br>
 * 
 * This method is called when a form has its tag value method equals to
 * post.
 * 
 * @param request
 *            the request send by the client to the server
 * @param response
 *            the response send by the server to the client
 * @throws ServletException
 *             if an error occurred
 * @throws IOException
 *             if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String rand = request.getParameter(“rand”);
String username = request.getParameter(“username”);
String password = request.getParameter(“password”);
String useryzm = (String) session.getAttribute(“useryzm”);
if (useryzm != null && !useryzm.equals(“”)) {
if (!useryzm.equals(rand.trim())) {
out.print(“1”);
out.flush();
out.close();
return;
}
} else {
System.out.println(“系统验证码获取失败!”);
return;
}
TransactionContext tran;
try {
tran = new TransactionContext();
tran.beginTran(false);
UserDAO dao = new UserDAO(tran);
UserVO vo = dao.queryData(username, password);
if (vo.getUsername() != null && !vo.getUsername().equals(“”)) {
session.setAttribute(“user”, vo);
logger.info(username+”用户登陆成功”+” “+”user_loginip:”+request.getRemoteAddr());(请看这句代码)
out.print(“2”);

} else {
logger.info(“此用户不存在,登陆失败”);
out.println(“用户名或者密码错误!”);

}
tran.commitTran();
out.flush();
out.close();
} catch (TranSysException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

log4j写入数据库
数据库的用户名和密码都正确啊 
log4j写入数据库
log4j:ERROR Failed to excute sql –这句代码报错我的配置文件有问题,不知道怎么办
log4j写入数据库
10分
权限密码出错 啊
log4j写入数据库
用户 “”sa  “” 登录失败。  这个应该是你用户名获或密码错误吧?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明log4j写入数据库
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!