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
)。我是否应该避免使用 Logger 并自己做:
代替
log.info("process called..");
我可以使用
user.addLog("process called..");
获取 . 的字符串值会更好吗log.info()
?如果是这样,怎么做?
解决方案
最好的办法是使用JDBCAppender将日志存储在数据库中。当用户请求日志时,您可以决定在响应中加载和返回多少日志。
如果您将所有日志保存在内存中,例如在 StringBuffer 中,您可能会耗尽内存并终止您的应用程序。同样在服务器重新启动时,您的所有日志都会丢失。通过将日志存储到数据库并按需访问它来防止两者。
如果您真的需要一个 StringAppender 来进行自定义集成,您必须自己编写它并在AbstractOutputStreamAppender上进行扩展。 这是一篇博客文章,其中包含有关它的代码。
推荐阅读
- gnuplot - 如何使用计数器变量和键标题中的最后一行值
- css - JavaFx:上下文菜单动态样式
- c# - 我无法删除datagridview c#.net中的特定行
- excel - 零星的移位公式参考
- javascript - 为什么 ScrollView 会向我抛出警告消息?
- c++11 - C++ lambda 回调
- c++ - CMake 谷歌测试
- python - 跨不同系统(机器)使用相同 random_state 的 Sklearn 不同结果
- laravel - 如何将用户发送回 Laravel 中的预期页面
- reactjs - 在 Visual Studio Code 中自动导入 React 组件