java - 将输出记录到数据库中

标签 java spring logging persistence

我正在使用 Java、Spring、Hibernate、slf4j、log4j、Oracle 数据库堆栈开发中间件应用程序。目前我将输出记录到文本文件中。我想将日志存储在数据库中以用于故障排除。我尝试使用 log4j db Appender 直接登录数据库,但发现性能太慢。所以现在我让 log4j 附加到一个文件,并在一个单独的线程中逐行读取日志文件并插入到数据库中。这种方法并不太慢,而且不影响主应用程序的性能。

我的问题是,其他人有更好的想法或者有更好的方法吗?我不想使用 loggy 或 splunk 等任何工具,因为对于我的目的来说,这些工具是多余的。我想知道我可以使用哪些本土技术。

最佳答案

我知道您说过您不想使用外部工具,但我认为这是一个错误。您为日志记录创建定制解决方案所付出的努力已经由其他人做出,并且将提供比您更好、更高效、更强大的解决方案。

对于初学者来说,仅仅为了使日志文件更易于搜索而将日志文件加载到数据库中是一个坏主意。然后,您会产生运行数据库和加载所有文件的性能开销,并且必须编写和测试所有代码来执行此操作。

我建议查看logstash 工具。

如果您决定采用加载数据库的解决方案,那么您需要提供一些有关您打算使用的数据库类型的信息。

关于java - 将输出记录到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705357/

相关文章:

logging - 如何在 log4net ADONetAppender 中使用存储过程?

java - Hibernate boolean 字段映射问题

java - 试图反转存储在 Java 数组中的图像

java - Spring Data JPA : query ManyToMany, 按计数选择

java - 如何在不继承 'spring-boot-starter-parent' 模块的情况下测试我的 Spring-Boot 应用程序?

java - RollingFileAppender 如何与 log4j2 一起工作?

java - 任何人都可以解释这个声明 - "The point of all lambdas is deferred execution"

java - 如何在 libgdx 中重用帧缓冲区纹理

java - 使用java中的任务执行器将1000万条记录插入数据库

logging - Microsoft Enterprise Library 5.0 Logging Application Block 线程安全吗?