我在测试中有一个应用程序,它将部门Windows窗体应用程序的事件记录到SQL Server数据库。该应用程序几乎准备好生产。日志记录数据库与应用程序数据库完全分开。
我的问题是,我真的需要创建日志数据库的生产版本,还是只需将生产和测试事件记录到同一个数据库中?显而易见的答案是肯定的,当然我需要一个单独的数据库。您永远不希望混合使用测试和生产环境。但在这种情况下,写入数据库的数据并不是真正的生产数据,确切地说,它只是记录我们用来解决问题的详细信息。它没有商业价值,如果无意中丢弃数据或数据库暂时不可用,则不会丢失任何重要信息。在测试环境中完成所有操作将使我更容易管理。
因此,在所有环境中使用单个日志记录数据库的利弊基础似乎是更好的解决方案。但它感觉不对。任何人都可以告诉我为什么这是个坏主意?
答案 0 :(得分:3)
如果您的开发服务器已关闭但未生成,则您的日志记录可能无效。可以保证当你需要登录的东西将会发生时。在我们的例子中,prod和dev不在同一个物理位置,这意味着通过我们的网络发送日志记录数据并导致管道瓶颈和胡思乱想的网络人员。
另外,如果您决定更改日志记录过程,该怎么办?在进行新的开发时,整个生产过程可能会中断。
有时候有人可能会读到这些日志,因为发生错误而忘记它发生在dev上时会发生恐慌。或者更糟糕的是,有人可能会看到一个错误的错误,他们认为这个错误发生在真正发生在开发上的开发中。
答案 1 :(得分:1)
我会说:
使用标准方法进行日志记录(单个DLL或类似方法)并实际将日志数据库存放在生产中。
这样,您的日志记录数据库可以被视为“日志记录服务器”,并且所有应用程序(开发,登台,测试和产品)都可以登录到它,因为您使用的是经过审查的库。
当然,您还必须注意不要淹没服务器......
答案 2 :(得分:1)
我认为将它保留在开发框上没有任何问题,除非你的应用程序如果无法正确登录就会失败,或者除非记录的信息比你指示的更有价值。
从好的方面来说,将您的日志记录数据库保存在您的开发服务器上将有助于从生产服务器中获取处理此数据的负担 - 这是性能方面的明确优势。
答案 3 :(得分:0)
首先记录数据库是一个坏主意。当您由于某种原因无法连接到数据库时会发生什么?我建议你使用log4net并实现RollingFileAppenders。他们将日志条目写入文件,当文件达到某个限制时,log4net开始写入新文件。如果您对设置有疑问,请随时提出。我很乐意帮忙!