我有一个在 Intranet 上运行的 WPF 应用程序,与数据库的所有通信都是通过 REST Web 服务完成的。由于出于审计目的,我需要将用户活动(从信息到致命日志的日志)存储到 NoDb 实例(Seq 或 RavenDB)。我已经看到了这个线程,并且似乎完成了部分工作。如何将这些信息发送到 Seq /RavenDB?他们公开 API 吗?
另一个问题是关于可靠性的,您认为拥有冗余/平衡审计 Web 服务的最佳方法是什么?最好有一个不需要太多努力的配置
谢谢
我有一个在 Intranet 上运行的 WPF 应用程序,与数据库的所有通信都是通过 REST Web 服务完成的。由于出于审计目的,我需要将用户活动(从信息到致命日志的日志)存储到 NoDb 实例(Seq 或 RavenDB)。我已经看到了这个线程,并且似乎完成了部分工作。如何将这些信息发送到 Seq /RavenDB?他们公开 API 吗?
另一个问题是关于可靠性的,您认为拥有冗余/平衡审计 Web 服务的最佳方法是什么?最好有一个不需要太多努力的配置
谢谢
1)如果您需要使用 Web 服务,您的 Web 服务可以通过 HTTP/S 将事件发布到 Seq - API 文档位于:http ://docs.getseq.net/docs/posting-raw-events (批处理事件非常重要)在这种情况下推荐)。
2)如果您可以避免“Web 服务”的字面解释,而只是在服务器上建立另一个公开 Web 服务的 HTTP 端点,您可以安装 Seq 以侦听 URL 前缀,例如https://my-server/ seq,它允许其他服务侦听其他端点,例如https://my-server/ ...有关设置的文档在这里:http ://docs.getseq.net/docs/storage-paths-and-urls #section-the-listen-uri
3) 同样在 Seq 的情况下,如果您通过 Serilog 发送事件,您可以设置两个 Seq 服务器并记录到它们:
.WriteTo.Seq("https://primary-seq")
.WriteTo.Seq("https://backup-seq")
在这种情况下,您的所有日志搜索等都需要在主实例上进行,因为配置数据(权限等)不会在它们之间复制。
您也可以考虑bufferBaseFilename
对一个或两个连接使用 ,这将在本地将事件缓冲到文件中,以便容忍一些服务器停机时间。
但是,如果您的审计要求是事务性的(即法律/合规性),您可能仍然应该考虑将这些在常规事务中写入 SQL 数据库(如果有的话)。