使用Log4j记录需要很长时间

时间:2012-07-17 05:21:37

标签: java oracle10g

我正在使用Log4j日志框架将日志插入到oracle数据库中。但是log4j属性文件中的insert查询需要花费大量时间来执行并使应用程序非常慢。当我从java中删除日志语句时代码,应用程序工作正常。首先,我认为插入DataBase需要时间,但在外部文件上写日志也需要很长时间。

有人可以建议一个解决方案吗?

谢谢你, Dhaval Maheshwari。

3 个答案:

答案 0 :(得分:2)

如果您的应用程序正在开发中,那么日志级别应该是debug,在登录之前,您应该检查isDebugEnabled()然后记录您的字符串。

但是如果你的应用程序正在生产中,那么日志级别应该是info,你必须在日志文件中记录最少的信息。

  

在您的应用程序中始终使用至少两个日志级别,一个用于debuggnig   模式(用于开发环境)和另一个用于生产模式和   生产日志应该是最小的。

这是您加快申请速度的方式。

  

第二件事,如果你想将你的日志持久存储到数据库中   创建一个scheduler task,其职责是阅读日志   从平面文件并将它们持久化到数据库并安排它   一天只运行一次。

答案 1 :(得分:1)

我建议你现在不要遵循这项技术。

首先,我不确定为什么要尝试在DB中记录log4j的输出。 无论如何,如果有必要尝试这样的事情。让日志文件按原样写入文件,然后运行一个线程,当文件作为批处理过程关闭到数据库时,从磁盘转储该文件。

在这种情况下,您的应用程序将与DB的延迟分开。

还有其他解决方案也使用JMS。 您可以将其写入JMS队列,另一方面,使用者可以读取队列并将其写入数据库。

这取决于您尝试解决的问题类型。

看到它的帮助

答案 2 :(得分:0)

在日志记录中包含的级别。例如,在生产中仅记录应用程序级异常和错误[ERROR级别]。

如果跟踪日志(例如用户操作)不将它们写入文件,则直接将它们添加到数据库中。希望这可以帮助。