征求讨论:Log4j输出到数据库的连接池问题

bluefishangel 2004-08-09 04:20:33
我在做一个系统日志输出的模块。主要用于跟踪系统用户的操作状况并输出到Oracle数据库。也就是说用户的每一个事件都在执行后会通过Log4j写到数据库里面去。因此如果每次都连接一次数据库的话肯定不行,速度必定很慢。我在考虑用数据库连接池。没有找到Log4j关于连接池的用法。各位大侠有何高见?请大家智者见智,一起讨论吧!
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluefishangel 2004-08-13
  • 打赏
  • 举报
回复
配置和我的差不多啊。你想说明什么问题呢?
有兴趣的话用mail交流吧。
chenjl@sinosoft.com.cn
朋友别哭 2004-08-12
  • 打赏
  • 举报
回复
up
muzg 2004-08-12
  • 打赏
  • 举报
回复
配置文件:loger_dabase.property
log4j.rootLogger=DEBUG,DATABASE
log4j.addivity.org.apache=true
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/temp
log4j.appender.DATABASE.driver=org.gjt.mm.mysql.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=mzg
log4j.appender.DATABASE.sql=insert into test (id) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

测试代码:Loger_dabase.java
package loger;
import org.apache.log4j.*;
public class Loger_dabase {
Logger loger=Logger.getLogger(Loger_dabase.class);
public static void main(String args[]){
PropertyConfigurator.configure("loger_dabase.property");
Loger_dabase d=new Loger_dabase();
d.send_database();
}
public void send_database(){
loger.debug("hello mzg");
loger.info("hello mzg");
loger.fatal("hello mzg");
loger.error("hello mzg");
}
}

其实它还可以发到你的油箱
bluefishangel 2004-08-11
  • 打赏
  • 举报
回复
什么???你的意思是说字段名都要按它的规定定才行吗????不会吧~~~
TinyJimmy 2004-08-11
  • 打赏
  • 举报
回复
我没有Log4j, 但写数据库的方法有点类似, 超过某一制定的数量时自动连接数据库写入一次. 如果不这样做, 每次写日志都操作数据库, 消耗大了.

westwin 2004-08-11
  • 打赏
  • 举报
回复
如果要望数据库里插入自定义的字段,就没那么容易咯
bluefishangel 2004-08-11
  • 打赏
  • 举报
回复
下面是我写的测试配置文件。可是还是没有成功。我实在找不出错在哪里了。郁闷啊!
# JDBC Appender 输出到数据库
#######################
log4j.appender.JDBC=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.JDBC.URL=jdbc:oracle:thin:@192.168.70.144:1521:orcl
log4j.appender.JDBC.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.JDBC.user=oaprd
log4j.appender.JDBC.password=newoaprd
log4j.appender.JDBC.BufferSize=40

log4j.appender.JDBC.layout = org.apache.log4j.PatternLayout
log4j.appender.JDBC.layout.ConversionPattern = INSERT INTO USEREVENTLOG(URI,MESSAGE) VALUES ('%c','%m')
各位大侠看看有什么错呢?
majy 2004-08-11
  • 打赏
  • 举报
回复
不好意思,没听说Log4j本身有写数据库的功能,恐怕要自己进行继承后改写才行吧
Shires 2004-08-11
  • 打赏
  • 举报
回复
up
bluefishangel 2004-08-11
  • 打赏
  • 举报
回复
我发现关于Log4j的JDBCAppender网上的资料都讲得不清不楚。有的还有出入。现在都晕了。我试了n多方法也没能写入到Oracle数据库。有没有个权威一点的实例啊?请大力指导一下。
bluefishangel 2004-08-10
  • 打赏
  • 举报
回复
照你这么说Log4j就不从存在连接池的问题了吗?可是我在API里看到JDBC相关类诶。
您能详细说明一下您所说的量吗?达到什么量就连数据库,怎么设置?
ChDw 2004-08-10
  • 打赏
  • 举报
回复
Log4j并不是每次都去连接的而是基本上只有一个连接,你根本不需要自己来做这样的事情

Log4j在内部都只有一个连接,当你开始写log的时候到达一定的量时,Log4j内部就会开始使用这些数据库连接来完成

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧