我正在使用Log4j日志框架将日志插入到oracle数据库中。但是log4j属性文件中的insert查询需要花费大量时间来执行并使应用程序非常慢。当我从java中删除日志语句时代码,应用程序工作正常。首先,我认为插入DataBase需要时间,但在外部文件上写日志也需要很长时间。
有人可以建议一个解决方案吗?
谢谢你, Dhaval Maheshwari。
答案 0 :(得分:2)
如果您的应用程序正在开发中,那么日志级别应该是debug
,在登录之前,您应该检查isDebugEnabled()然后记录您的字符串。
但是如果你的应用程序正在生产中,那么日志级别应该是info
,你必须在日志文件中记录最少的信息。
在您的应用程序中始终使用至少两个日志级别,一个用于debuggnig 模式(用于开发环境)和另一个用于生产模式和 生产日志应该是最小的。
这是您加快申请速度的方式。
第二件事,如果你想将你的日志持久存储到数据库中 创建一个
scheduler task
,其职责是阅读日志 从平面文件并将它们持久化到数据库并安排它 一天只运行一次。
答案 1 :(得分:1)
我建议你现在不要遵循这项技术。
首先,我不确定为什么要尝试在DB中记录log4j的输出。 无论如何,如果有必要尝试这样的事情。让日志文件按原样写入文件,然后运行一个线程,当文件作为批处理过程关闭到数据库时,从磁盘转储该文件。
在这种情况下,您的应用程序将与DB的延迟分开。
还有其他解决方案也使用JMS。 您可以将其写入JMS队列,另一方面,使用者可以读取队列并将其写入数据库。
这取决于您尝试解决的问题类型。
看到它的帮助
答案 2 :(得分:0)
在日志记录中包含的级别。例如,在生产中仅记录应用程序级异常和错误[ERROR级别]。
如果跟踪日志(例如用户操作)不将它们写入文件,则直接将它们添加到数据库中。希望这可以帮助。