是否更好地登录到文件或数据库?

Igo*_*r K 23 sql-server logging asp-classic

我们仍在使用旧的经典ASP,并且只要用户在我们的应用程序中执行某些操作,就会想要记录.我们将编写一个通用子例程来接收我们要记录的详细信息.

我们应该使用FileSystemObject将其记录为txt文件还是将其记录到MSSQL数据库?

如果是数据库,我们是应该向现有数据库添加新表还是应该使用单独的数据库?

Stu*_*tLC 24

编辑

事后看来,更好的答案是登录BOTH文件系统(首先,立即),然后登录到集中式数据库(即使延迟).

写入文件系统的理由是,如果外部基础设施依赖性(如网络,数据库或安全问题)阻止您远程编写,至少如果您可以从Web服务器的硬盘恢复数据,则至少会有后退(类似于航空业的黑匣子).

实际上,像Splunk这样的企业日志管理器可以配置为log4net刮取本地服务器日志文件(例如,由EntLib Logging Application Block等编写),然后将它们集中在可搜索的数据库中,其中记录的数据可以被挖掘,绘制,显示在仪表板等

但从操作角度来看,您可能拥有一个Web服务器场,并假设本地文件系统和远程数据库日志记录机制都正常工作,99%的用例实际上是在日志中查找任何内容文件仍将通过中央数据库(理想情况下具有一个不错的前端系统,允许您查询,聚合甚至图形化日志数据).

原始答案

如果您有数据库,我建议将其用于审计记录而不是文件系统.

理由:

  • 数据的类型化和标准化分类(severity, action type, user, date ...)
  • 找到审计数据(select ... from Audits where ...)和Grep 更容易
  • 它更容易清理(例如Delete from Audits where = Date ...)
  • 它更容易备份

使用现有数据库或新数据库的决定取决于 - 如果您有多个应用程序(具有自己的数据库)并且希望集中记录/审核所有应用程序中的所有操作,则集中式数据库可能有意义.

由于您说您要审核用户活动,因此在与用户表/定义相同的数据库中进行审核(如果适用)可能是有意义的.

  • 完全同意 - 我已经完成了两种方式,并且大多数情况下不喜欢阅读日志文件.通过将日志条目放入可查询的内容中,您可以进行一些趋势分析(例如,哪种异常/条目正在增加,哪些错误最常发生,等等). (3认同)

小智 6

我同意上述内容,但可能明显的例外是记录数据库故障,这会使登录数据库成为问题.这对我来说已经出现了,因为我正在处理不经常但常规的网络故障转移.


Dav*_*vid 5

要么有效.这取决于您的偏好.

我们有一个中央数据库,我们所有的应用都会记录他们的错误消息 我们编写的每个应用程序都在一个具有唯一ID的表中设置,错误日志表包含对AppId的外键引用.

这给我们一个监控错误的地方带来了巨大的好处.我们之前已将其作为文件系统或通过向受监控的收件箱发送电子邮件来完成,但我们能够创建一个相当不错的Web应用程序来与错误日志进行交互.我们有不同的错误级别,我们有一个"已确认"的标志字段,因此我们有一个页面,我们可以按严重程度等查看未确认的事件,