使用WebService记录客户端日志输出NoDB

时间:2015-11-27 08:09:11

标签: web-services serilog getseq

我有一个在Intranet上运行的WPF应用程序,并且通过REST Web服务完成与DB的通信。因为出于审计目的,我需要将用户活动(从Information到Fatal日志的日志)存储到NoDb实例(Seq或RavenDB)。我见过this thread并且似​​乎做了一部分工作。如何将这些信息发送到Seq / RavenDB?他们公开API吗?

另一个问题是关于可靠性,您认为拥有还原/平衡审计网络服务的最佳方法是什么?最好有一个不需要太多努力的配置

由于

1 个答案:

答案 0 :(得分:0)

1)如果您需要使用Web服务,您的Web服务可以通过HTTP / S将事件发布到Seq - API文档位于:http://docs.getseq.net/docs/posting-raw-events(在此方案中强烈建议使用批处理事件)。

2)如果你能避免对网络服务的字面解释"而只是站在服务器上另一个公开Web服务的HTTP端点,你可以安装Seq来监听像https://my-server/seq这样的URL前缀,这允许其他服务在其他端点上监听,如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数据库(如果有)。