2009-05-28 51 views
2

我有一个测试应用程序,它将部门Windows窗体应用程序的事件记录到SQL Server数据库。该应用程序已准备好投入生产。日志记录数据库与应用程序数据库完全分离。用于记录的独立生产数据库

我的问题是,我真的需要创建一个生产版本的日志数据库,还是我只能将生产和测试事件记录到同一个数据库?显而易见的答案是肯定的,当然我需要一个单独的数据库。你永远不希望测试和生产环境混合在一起。但是在这种情况下,写入数据库的数据并不是真的生产数据,它只是记录我们用来排除问题的详细信息。它没有商业价值,如果数据不慎丢失或数据库暂时不可用,则不会丢失任何重要信息。在测试环境中完成所有这些工作将使我更容易管理。

因此,在所有环境中使用单一日志记录数据库的优缺点似乎是更好的解决方案。但它感觉不对。有人可以给我任何具体的理由,为什么这是一个坏主意?

回答

3

如果您的开发者服务器关闭,但您的日志记录可能无法正常工作。可以保证,当你需要登录产品的关键事件将会发生。在我们的案例中,prod和dev不在同一个物理位置,这意味着要在我们的网络上发送日志数据,并导致管道瓶颈和胡思乱想的网络人员。

另外如果您决定更改日志记录过程呢?在你进行新的开发时,整个产品过程可能会中断。

而且有些时候有人可能会读取日志,在发生某些错误时发生恐慌,忘记它发生在dev上。或者更糟糕的是,有人可能会看到他们认为在开发过程中发生的错误。

1

我会说:

用于记录的标准方法(一个DLL或相似)且实际安置的生产记录数据库。

这样,您的日志记录数据库就可以被视为“日志服务器”,并且所有应用程序(Dev,Staging,Test和Prod)都可以登录到它,因为您使用的是经过审查的库。

当然,你要还是看出来,你不淹没服务器...

+0

谢谢。我实际上正在使用包装log4net的单个DLL。我没有想过把所有东西都指向生产。好建议。 – 2009-05-28 20:35:22

+0

同意。记录一切到生产听起来是合理的。如果你依赖生产服务器,那么这种方法不会让你的应用程序失去可靠性。 – 2009-05-28 20:44:36

0

的数据库上保持日志是摆在首位是一个坏主意。出于某种原因无法连接到数据库时会发生什么?我建议你使用log4net并实现RollingFileAppenders。他们将日志条目写入文件,当文件达到某个限制时,log4net开始写入新文件。如果您有设置问题,请随时询问。我很乐意提供帮助!

+0

感谢您的帖子。我实际上使用了RollingFileAppenders。他们非常适合web应用程序,但是我已经运行了许多权限并将它们与我的Windows应用程序一起使用(可能对我们的企业来说是独一无二的,但仍是真正的问题),这就是为什么我要使用数据库appender 。看到我的其他帖子在http://stackoverflow.com/questions/727462/where-to-write-log-for-windows-app。 – 2009-05-28 20:49:08

+0

@Artel:你说`保持数据库上的日志首先是一个坏主意,为什么这样呢?`,你能否用例子说明什么时候出现错误? – Rachel 2012-04-03 17:51:37

1

我没有看到把它保留在开发箱上,,除非如果它无法正常登录,或除非您记录的信息比您指出的更有价值,否则您的应用程序将失败。

另一方面,在开发服务器上保存日志数据库将有助于从生产服务器处理这些数据的负载 - 这是性能方面的一个明显优势。

相关问题