java如何在stringBuilder中存储日志
我想向前端用户显示所有日志。如何将所有日志语句传输到前端?例如:
void process(){
..
// currently this is shown in a file and in a console
log.info("process called..");
}
如何以高效的方式将此日志消息传输到前端?我应该将日志附加到StringBuilder
中吗?如何使用Log4j2
实现这一点
目前,我没有jdbc商店。但我可以将所有日志存储到无sql数据库中。我不能使用JDBCAppender
(或CassandraAppender
)。我是否应该避免使用记录器并自己执行此操作:
而不是
log.info("process called..");
我可以用
user.addLog("process called..");
获取log.info()
的字符串值是否更好。如果是,怎么做
# 1 楼答案
最好的办法是将日志存储在带有JDBCAppender的数据库中。当用户请求日志时,您可以决定在响应中加载和返回多少日志
如果将所有日志保存在内存中(例如StringBuffer中),可能会耗尽内存并终止应用程序。此外,在服务器重启时,所有日志都将丢失。通过将日志存储到数据库中并按需访问,可以防止这两种情况的发生
如果您真的需要一个StringAppender来进行定制集成,那么您必须自己编写它来扩展AbstractOutputStreamAppender。 Here is a blog post带有相关代码