Simon_Ks的gravatar头像
Simon_Ks 2014-08-12 09:57:49

手持仪WebService异常信息记录数据库是否合理?

最近在做一个项目,关于WebService的。我这边些接口(就是数据库的增删改查),供手持仪客户端那边调用,接口调用这块基本上没问题了。问题就是异常信息的捕获以及记录异常。记录几个问题如下:

1.我现在是数据库操作写在一个文件,然后接口写在另外一个文件,这样的设计是否合理?

2.有谁有WebService手持仪这方面的项目经验吗?我现在不管什么异常,都返回给客户端一个null。缺点就是客户端不知道具体的异常是什么?这样设计好吗?当然可能用户那边也不懂,比如异常信息是“数据库表名不存在”,那用户看了这个其实也不懂。我个人是这么想的,你们觉得有必要返回吗?

3.不管是否将具体异常返回给客户端,在本地我都是要记录异常的,这点是肯定的。问题就是,我该怎么记录呢?是yonglog4j记录到文件,还是一旦捕获到异常,就存到数据库。现在项目的要求是,一定要记录要数据库,log4j有没有都可以。我的问题是:

⑴如果每次catch,都进行将异常记录到数据库,会不会很占资源?

⑵假设异常信息是出在连接数据库的地方,比如用户名密码错误,此时,我需要将异常记录到数据库,那么这也要连接数据库呀,可是都连接不上,怎么记录?(个人感觉这个有点乱)

⑶我在网上看到一种方法,就是先log4j记录,然后定时再写到数据库,这种方法我觉得很好,不过不知道怎么弄?谁有类似的项目经验,还请多多指教呀!

拿出以上牛币,是真心想解决问题,还请大家多多帮忙啊!好的话我再加分!!

所有回答列表(4)
最代码官方的gravatar头像
最代码官方  LV167 2014年8月12日

我来回答下。

1.尽量将同样的业务放在一起,这样符合高内聚低耦合的设计思想

2.这样的设计是失败的案例,接口的设计可以参考sina微博的open,open.weibo.com

3.log4j的error级别的log即可,千万不要同步将错误写到db中,既影响主业务,又对数据库有很大的压力。log4j的log是异步写入的。

4.不要把异常信息写到db中

5.log4j异步写文件,然后脚本异步分析log写入非主业的db库方便web端查询。

评论(6) 最佳答案
DA东的gravatar头像
DA东  LV19 2014年8月12日

大气...

宛若重生的gravatar头像
宛若重生  LV19 2014年8月12日

真大气,这么多牛逼。。

Simon_Ks的gravatar头像
Simon_Ks  LV22 2014年8月14日

多谢牛哥

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友