如何在 stringBuilder 中存储日志

how to store logs in 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()的字符串值会不会更好。如果是,怎么做?

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

如果您将所有日志保存在内存中,例如在 StringBuffer 中,您可能 运行 内存不足并终止您的应用程序。同样在服务器重新启动时,您的所有日志都将丢失。通过将日志存储到数据库中并按需访问它可以防止这两种情况。

如果您确实需要一个 StringAppender 来进行自定义集成,您必须自己编写扩展 AbstractOutputStreamAppenderHere is a blog post 关于它的代码。