2016-08-17 83 views
1

过去我使用了log4j(v。1),很高兴知道对该项目进行了重大重构,导致log4j 2解决了以下问题:困扰版本1.使用log4j 2写入数据文件或数据库表

我想知道是否可以使用log4j 2写入数据文件,而不仅仅是日志文件。

我将很快开发的应用程序需要能够接收来自不同来源的许多事件,并将它们以非常快的速度写入数据文件或数据库(我还没有确定它)。

在尝试写入事件时,接收事件的线程不能被I/O阻塞,所以基于LMAX Disruptor库的log4j2的异步记录器绝对适合这种情况。

此外,当分别写入数据文件或数据库表时,我的应用程序必须能够从'磁盘空间不足'或'无法达到数据库'条件恢复。换句话说,当应用程序磁盘空间不足或数据库暂时不可用时,我的应用程序需要将事件存储在内存中,并等待存储器可用,并在存储时将所有等待事件写入磁盘或数据库。

你认为我可以用log4j做到这一点吗?

非常感谢您的帮助。

问候, 努诺·格雷罗

回答

1

是。

我知道在类似场景中至少有一个生产实现,其中收集事件以高吞吐量写入磁盘。

写入系统卷以外的卷,以最大限度地减少由于磁盘空间溢出而导致系统崩溃的可能性。

前期容量规划有助于确保具有足够资源的硬件配置,以在合理的时间内处理预计的平均负载和突发。

不要让系统用完磁盘空间:)。跟踪磁盘使用情况,并在极端情况下主动删除旧数据。