精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-12
一万条?这个数据量根本谈不上大,用perl或者直接awk搞个shell脚本,弄到crontab里每天晚上跑就不就完了,这种活java干起来烦
|
|
返回顶楼 | |
发表时间:2008-03-14
典型的系统维护任务,unix/linux下脚本该干的活儿。
|
|
返回顶楼 | |
发表时间:2008-03-14
想问一下楼主,将日志插到数据库的主要目的是什么?
如果是转化为相应的业务日志,提供给用户查询,那么就需要即时插到数据库,而不能缓存到一定量,一次性插入 现在我们的项目用的是AOP截取日志,扩展了JDBCAppender用连接池插入到数据库。 |
|
返回顶楼 | |
发表时间:2008-03-17
与log4j无关了,日志是别的系统生成的
如果是自己的系统入库那就修改一下代码也不麻烦啊 问题可以简化成:给你一个10G的有一定格式的文件,怎样高效地提取每一行有用的数据然后入库 |
|
返回顶楼 | |
发表时间:2008-03-18
<appender name="database"
class="org.apache.log4j.jdbc.JDBCAppender"> <param name="BufferSize" value="5" /> <param name="Driver" value="com.mysql.jdbc.Driver" /> <param name="URL" value="jdbc:mysql://192.168.0.14/ispc?useUnicode=true&characterEncoding=UTF-8" /> <param name="User" value="root" /> <param name="Password" value="admin" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO log (level,msg,datetime) VALUES ( '%p', '%m','%d{yyyy-MM-dd HH:mm:ss}')" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="WARN" /> <param name="levelMax" value="WARN" /> <param name="acceptOnMatch" value="false" /> </filter> </appender> 其中 <param name="BufferSize" value="5" />就是指定多少条缓冲日志写进数据库的,,比如你可以设置100条进数据库 |
|
返回顶楼 | |
发表时间:2008-03-18
个人觉得log4j写数据库对业务一点价值都没有,log4是整条信息作为一个字段插入,这样的信息查询不方便
有业务价值的log都应该自己定制数据表来插数据 |
|
返回顶楼 | |
发表时间:2008-03-18
Sam1860 写道 个人觉得log4j写数据库对业务一点价值都没有,log4是整条信息作为一个字段插入,这样的信息查询不方便
有业务价值的log都应该自己定制数据表来插数据 可以扩展org.apache.log4j.AppenderSkeleton,实现自己的用于写DB的Appender 配置文件如下: <writer name="db" class="DBWriter"> <formatter name="pattern" class="PatternFormatter"> <param name="pattern" value="INSERT INTO log_tbl VALUES ( TO_DATE('%d{yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS'), '%t', '%-5p', '%m' )" /> </formatter> <param name="resource-ref" value="java:comp/env/jdbc/datasource" /> </writer> |
|
返回顶楼 | |
发表时间:2008-03-18
neuzhujf 写道 Sam1860 写道 个人觉得log4j写数据库对业务一点价值都没有,log4是整条信息作为一个字段插入,这样的信息查询不方便
有业务价值的log都应该自己定制数据表来插数据 可以扩展org.apache.log4j.AppenderSkeleton,实现自己的用于写DB的Appender 配置文件如下: <writer name="db" class="DBWriter"> <formatter name="pattern" class="PatternFormatter"> <param name="pattern" value="INSERT INTO log_tbl VALUES ( TO_DATE('%d{yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS'), '%t', '%-5p', '%m' )" /> </formatter> <param name="resource-ref" value="java:comp/env/jdbc/datasource" /> </writer> 看不出你自己实现的这个appender跟默认的有什么区别。还是不能把业务信息分离。 假设在登陆接口中,要把登陆失败的人的ID,IP写入数据库, log4j能做吗? // logger.warn(??);//你的方法中这里应该怎样写?? logger.warn(ID + "," + IP)//这样??,插进数据库时怎样把ID, IP分别插进2个字段? 自己写的appender再怎么改也只能拿个%m 啊 log4j中有个MDC也许可以做到分开插,但写一个LOG麻烦多少倍,倒不如自己插数据表 MDC.put("ID", ID); MDC.put("IP", IP); logger.warn("login failed"); |
|
返回顶楼 | |
发表时间:2008-04-26
日志插入数据库的话是为了方便维护人员来维护....可以直接从数据库查询,而不用去分析log日志了
|
|
返回顶楼 | |