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