将 NLog 与 SQLite 和 WPF 控件相结合

Combining NLog with SQLite and WPF control

我在我的 C# WPF 应用程序中使用 NLog 和 SQLite,并且 NLog 配置是使用 SQLite 数据库作为目标设置的。并且登录到 SQLite 数据库工作正常。

现在我想在 ListView(或类似的)中显示(部分)日志消息,即将日志消息放在控件可以绑定的 ObservableCollection 中。我想显示记录的消息,但也可以根据时间戳、日志级别、日志消息中的关键字等过滤消息。执行此操作的好方法是什么?

我考虑编写一个自定义 NLog 目标,将条目放入 ObservableCollection。但这可能会使添加过滤器功能变得困难。另一种可能是以某种方式监视 SQLite 数据库中的更改,读回更改并更新 ObservableCollection.

如果您希望在程序运行之间保留日志,那么我会说像您现在所做的那样继续将它们保存到 SQLite 中,并编写一个表单以您想要的任何条件查询该数据库。我用 NHibernate 做了类似的事情来处理数据库 IO。

但是,如果在程序运行期间只需要日志,则要么执行与上述相同的操作,但使用内存中的 SQLite 数据库,要么使用 NLog 的内存目标并使用 LINQ 查询该数组列表