如何在 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 来进行自定义集成,您必须自己编写扩展 AbstractOutputStreamAppender。
Here is a blog post 关于它的代码。
我想向前端用户显示所有日志。如何将所有日志语句传输到前端?例如:
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 来进行自定义集成,您必须自己编写扩展 AbstractOutputStreamAppender。 Here is a blog post 关于它的代码。