首页 > 解决方案 > 如何在stringBuilder中存储日志

问题描述

我想向前端用户显示所有日志。如何将所有日志语句传输到前端?例如:

void process(){
..
// currently this is shown in a file and in a console
log.info("process called..");
}

如何以有效的方式将此日志消息传输到前端?我应该将日志附加到StringBuilder? 我该怎么做Log4j2

目前,我没有jdbc 商店。但我可以将所有日志存储到无 sql 数据库中。我不能使用JDBCAppender(或CassandraAppender)。我是否应该避免使用 Logger 并自己做:

代替

log.info("process called..");

我可以使用

user.addLog("process called..");

获取 . 的字符串值会更好吗log.info()?如果是这样,怎么做?

标签: javalog4jlog4j2

解决方案


最好的办法是使用JDBCAppender将日志存储在数据库中。当用户请求日志时,您可以决定在响应中加载和返回多少日志。

如果您将所有日志保存在内存中,例如在 StringBuffer 中,您可能会耗尽内存并终止您的应用程序。同样在服务器重新启动时,您的所有日志都会丢失。通过将日志存储到数据库并按需访问它来防止两者。

如果您真的需要一个 StringAppender 来进行自定义集成,您必须自己编写它并在AbstractOutputStreamAppender上进行扩展。 这是一篇博客文章,其中包含有关它的代码。


推荐阅读