java中使用log4j将日志信息写入数据库中
一直都在想如何用log4j将message写到数据库中,在以后查看的时候会方便些。(数据库都是使用MSSQL)
在网上搜了下, 有两种方法比较合适。
1.插入数据库中的表的字段有多个(不包括自动增长列),这种情况适合在浏览时要对某个字段进行排序等其他需求。
配置文件主要部分如下:
<appender name="access_Log_JDBC" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<param name="URL" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=LOG" />
<param name="user" value="sa" />
<param name="password" value="sa" />
<param name="sql" value="INSERT INTO t(date,user,b,message) VALUES (getDate(), '%X{user}', '%X{b}', '%m')" />
<param name="BufferSize" value="1" />
</appender> 
<category name="accesslog_category">
<priority value="debug" />
<appender-ref ref="access_Log_JDBC" />
<appender-ref ref="CONSOLE" />
</category>
java 部分代码如下:
//MDC的帮助页面:
public class AccessLogFactory ...{
private static final String ACCESSLOG_CATEGORY = "accesslog_category";
static...{
DOMConfigurator.configure("./l");
}
public static Log getLog() ...{
Log logger = null;
try ...{
logger = LogFactory.getLog(ACCESSLOG_CATEGORY);
} catch (LogConfigurationException e) ...{
e.printStackTrace();
}
return logger;
}
public static void main(String[] args)...{
Log logger = AccessLogFactory .getLog();
String msg = "b03";
String user = "u03";
String b = "b03";
MDC.put("user", user); //和配置文件中的%X{user}对应
MDC.put("b", b); //和配置文件中的%X{b}对应
logger.error(msg); //和配置文件中的%m对应
msg = "b04";
user = "u04";
= "b04";
MDC.put("user ", user );
log4j与log4j2MDC.put("b", b);
logger.error(msg);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。