我有麻烦找上设计和实施生活在Azure云应用的弹性日志框架标准做法的信息。这个想法是,应用程序不需要知道或处理自己的日志记录和信息\错误信息的记录可以照顾“在后台”设计Azure的云的日志框架
我正在考虑的设计基本上是“队列 - 基于负载均衡模式“(https://msdn.microsoft.com/en-us/library/dn589783.aspx)通过链接自动转发的服务总线实体进行增强。
的想法是,每个应用程序都有它自己的队列地方在它的地方丢弃的日志信息资源组。此本地队列然后将日志消息转发到中央日志队列。当日志消息落在中央队列中时,它触发一个工作服务(或类似的)来适当地处理消息(格式并将其发送到适当的数据存储区)
这种方法的思想是如果中央消息队列日志消息将保留在应用程序的本地队列中,从而提供额外的弹性层。如果本地队列失败,该应用程序可以作为备份\冗余登录到其他数据存储。
所以我只是想知道是否有任何缺点或理由上面不会是一个好方法,或者如果任何人都可以推荐一个更好的方法来设计/实施Azure中的共享日志框架?
嗨佩德罗,感谢您的快速回复。我正在考虑在监视中央队列的工作进程中使用类似Log4Net或Serilog的东西,以将实际格式化的异常/消息发送到最终的数据存储区(例如数据库)。通过这种方式,只有一个服务需要知道日志记录的细节,并且会包含所有与日志相关的代码(因此所有日志特定的代码都将在一个系统中)。所有其他应用程序将只需要担心发送消息到本地资源队列。我认为这是分开顾虑的好方法 – fgenc
确实。我做了类似的事情,我使用IEventAggregator(不再维护)作为我的内存中的pub/sub。订阅者只会将日志消息发布到队列中,在我的情况下是Azure存储队列 –