标签: sql-server logging rdbms nlog elmah
在企业项目中,我需要记录大量数据(原始值,修改值,更改数据的用户等) 我正在使用NLog来记录这些数据,使用ELMAH来记录异常。 我不确定是否使用单独的数据库来存储日志记录信息或使用主数据库。 使用单独数据库的优点是:
缺点是:
当然还有更多优点和缺点,但总而言之,我需要知道:使用大型事务RDBMS的企业软件的最佳实践是什么? 或者根据某些因素,它可能因项目而异;
答案 0 :(得分:6)
您希望将错误日志记录与数据访问分开并分离。如果数据访问回滚,您希望保持日志访问和记录其回滚的事实。如果数据库已关闭,您需要记录数据库 的结果。如果您的日志记录与数据访问在事务上是一致的,那么您的系统可能会在一分钟内遇到10次回滚,但您的错误日志将不显示!
日志记录应该是自己的存储(数据库)的另一个原因是,关系通常不是1:1,错误日志记录通常聚合从多个系统报告的错误,可能由多个数据库支持。
用于提交错误报告的基础结构应该处理错误日志存储库的不可用性(即,日志记录数据库已关闭或网络已分区),请使用可用的众多排队解决方案之一(MSMQ,{{3 },RabbitMQ等。)