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"; b = "b04"; MDC.put("user ", user ); log4j与log4j2MDC.put("b", b); logger.error(msg); } } |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论