记录到文件还是数据库更好?

2024-01-25

我们仍在使用旧的经典 ASP,并且希望在用户在我们的应用程序中执行某些操作时进行记录。我们将编写一个通用子例程来获取我们想要记录的详细信息。

我们是否应该使用以下命令将其记录到 txt 文件中FileSystemObject或者将其记录到 MS SQL 数据库?

在数据库中,我们应该向现有数据库添加一张新表还是应该使用单独的数据库?


Edit

事后看来,更好的答案是登录BOTH文件系统(首先,立即),然后到集中数据库(即使延迟)。大多数现代日志框架都遵循publish-subscribe模型(通常称为日志记录源和接收器),它将允许定义多个日志记录接收器(目标)。

写入文件系统背后的基本原理是,如果网络、数据库或安全问题等外部基础设施依赖项阻止您远程写入,那么如果您可以从服务器的硬盘恢复数据(类似于航空业的黑匣子)。写入文件系统的日志数据一旦确认中央数据库已记录数据就可以删除,因此一般文件系统保留大小或轮换次数不需要很大。

企业日志管理器如Splunk http://www.splunk.com/可以配置为抓取本地服务器日志文件(例如,由log4net, 实体图书馆Logging Application Block等),然后将它们集中在可搜索的数据库中,可以在其中挖掘记录的数据、绘制图表、在仪表板上显示等。

但从操作角度来看,您可能拥有一个服务器场或服务器集群,并假设本地文件系统和远程数据库日志记录机制都正常工作,99% 的用例实际上是尝试在服务器中查找任何内容。日志文件仍将通过中央数据库(理想情况下有一个像样的前端系统,允许您从日志数据查询、聚合、绘制图表和构建触发器或通知)。

原答案

如果您有数据库,我建议使用它来代替文件系统来进行审计记录。

理由:

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

使用现有数据库还是新数据库的决定取决于 - 如果您有多个应用程序(具有自己的数据库)并且想要集中记录/审核所有应用程序中的所有操作,那么集中式数据库可能是有意义的。

既然您说要审核用户活动,那么在与用户表/定义相同的数据库中进行审核可能是有意义的(如果适用)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录到文件还是数据库更好? 的相关文章

  • 需要 SQL Server 查询帮助

    我在视图中存储一堆数据 将 MS Access 查询转换为视图 现在我想做的是编写一个存储过程来根据添加数据的时间提取数据 这是我正在运行的查询 Select Name PlanID ApptDate 1stAppt rn from Sel
  • 如何处理用户界面中的数据库约束违规?

    我们使用存储过程在数据库中实现大部分业务规则 我永远无法决定如何最好地将数据约束违规错误从数据库传递回用户界面 我所说的约束更多地与业务规则相关 而不是与数据完整性相关 例如 诸如 无法插入重复的键行 之类的数据库错误与业务规则 不能有多个
  • 日志文件错误:[配置] 没有适用的操作,当前 ElementPath 为 [[配置][配置]]

    我正在尝试按如下方式配置日志返回 但它向我抛出此错误 配置文件如下
  • 使用 WHILE 创建虚拟数据

    我尝试使用 a 在表中插入一些虚拟数据WHILE 但它运行得非常非常慢 我在想也许我写的代码不正确 你能看一下并确认一下吗 Insert dummy data DECLARE i int Content int SET i 5001 WHI
  • 设置 xact_abort 并尝试一起捕获

    我的 sp 中有一个 try catch 块 其中只有一条插入语句 catch 检查错误代码是否违反 pk 如果是则进行更新 但有时我得到 当前事务无法提交 并且无法支持写入日志文件的操作 回滚事务 在批处理结束时检测到不可提交的事务 事务
  • 使用 Switch 的报告服务表达式

    我无法让这个表达式与报告服务一起使用 我必须使用 IF 和 ELSE IF 语句 感谢您的任何建议 Switch IsNothing Fields field date Value Fields set flag Value 1 Decli
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • 如何让 LinqToSql 将“索引提示”传递给 sql server?

    由于我们不能相信我们的客户会更新 sql server 中的索引统计信息等 因此我们过去不得不使用索引提示 http www sql server performance com tips hints general p1 aspx 由于我
  • Scrapy - 如何抓取网站并将数据存储在 Microsoft SQL Server 数据库中?

    我正在尝试从我们公司创建的网站中提取内容 我在 MSSQL Server 中为 Scrapy 数据创建了一个表 我还设置了 Scrapy 并配置了 Python 来抓取和提取网页数据 我的问题是 如何将Scrapy爬取的数据导出到我本地的M
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 如何在存储过程中实现 sql 搜索功能 (Sql Server 2008)

    我需要编写一个存储过程 该过程将使用 sql server 2008 根据可选参数搜索表 将会有两种模式 基本搜索模式 我们只传递一些文本 高级搜索模式 使用可选参数而不使用 SearchText 为了进行测试 我使用 AdventureW
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

    如何使用 SQLtimeSQL Server 2008 中 C NET 中引入的数据类型 我一直在努力让它发挥作用 但没有成功 这是一个MSDN 文章 http msdn microsoft com en us library bb6751
  • 如何从此 ADODB.Recordset 获取插入 ID?

    我试图避免在我的网络应用程序中使用直接的 SQL 查询 我环顾四周 得出的结论是 ADORecordset这将是这项工作的最佳或至少是最安全的工具 我需要将记录插入数据库表中 不幸的是 我不知道如何获取刚刚插入的记录的标识值 这是我现在所拥
  • 临时表是线程安全的吗?

    我正在使用 SQL Server 2000 它的许多存储过程广泛使用临时表 数据库的流量很大 我担心创建和删除临时表的线程安全性 假设我有一个存储过程 它创建了一些临时表 它甚至可以将临时表连接到其他临时表等 并且还可以说两个用户同时执行存
  • SQL Server 2014 安装中缺少 SQL Server Integration Services

    我正在尝试使用 Integration Services 安装 SQL Server 2014 Here https www microsoft com en US download details aspx id 42299是我以前用工具
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • Visual Studio 2010 中的数据库设计器

    我需要创建一个全新的 Sql Server 2008 数据库 并希望使用 Visual Studio 2010 Ultimate 中的数据库项目 我已经创建了该项目并在下面添加了一个表格dbo架构 桌子 sql仅以纯文本形式显示 但带有颜色

随机推荐

  • Firebase Auth:手动检测当前用户最近是否经过身份验证

    默认情况下 如果用户 X 年前登录 Firebase 将要求他 她通过以下方式重新进行身份验证reauthenticateWithCredential以完成该动作 如果用户在继续下一步操作之前已经符合重新身份验证的资格 是否可以查询 Fir
  • 尝试避免使用 sapply 进行 for 循环(对于 gsub)

    尽量避免使用for使用以下代码循环sapply 如果可能的话 带循环的解决方案对我来说非常适合 我只是想学习更多 R 并探索尽可能多的方法 目标 有一个向量i和两个向量sf 搜索 和rp 代替 对于每个i需要循环sf并替换为rp哪里匹配 i
  • 带有 Ignited-Datatables 库的服务器端 DataTables

    如何使用 Ignited Datatables 库来服务器端 DataTables 我的应用程序使用 CodeIgniter 我使用的库是Ignited datatables 库 https github com IgnitedDatata
  • SOLR计数多值字段查询

    是否可以创建一个 solr 查询 其中仅返回在多值字段中具有多个条目的文档 例如 docs id 1 myfield hello word hello stackoverflow id 2 myfield hello word 我天真的示例
  • 将数值向量中的 NA 替换为从邻居计算出的值

    我正在尝试写一个替换 函数将给定数值向量中的每个缺失值替换为算术平均值 of 它的前面和后面的元素 例如 如果c 5 NA 6 2 3 5 6 4 NA 2 NA 5 给出 那么结果应该是c 5 5 5 6 2 3 5 6 4 3 2 3
  • 如何在 printf 函数中使用宏

    所以我在我的头文件中定义了这个宏和其他一些宏 define COL1WIDTH 16 我想用它来打印这样的东西 word 25 Dir1 FileB 129 Sat Jan 1 00 00 02 2011 12 1 x4 2 x2 3 x2
  • ASP.NET 中的 jQuery ajax 带有 customErrors mode="On"

    知道如何检索服务器端在执行时抛出的原始异常使用 jQuery 调用 ajax 并使用 自定义错误模式 开 在 web config 中 如果 mode Off 我可以使用此函数获取错误 error function xhr status e
  • C++ 中的重定向

    include
  • TDD 如何应用于基于 Django 类的通用视图?

    由于 Django 中基于类的通用视图涉及框架的一些工作 我发现很难以 TDD 风格使用它们 现在 我使用 TestClient 从 http 模拟堆栈访问视图 但我更愿意在使用 TestClient 进行 功能 测试之前正确地对特定方法
  • 何时在 Linq 中使用 Cast() 和 OfType()

    我知道有两种将类型转换为IEnumerable从一个Arraylist在 Linq 中并想知道在什么情况下使用它们 e g IEnumerable
  • Cassandra/Spark 显示大表的条目计数不正确

    我正在尝试使用 Spark 处理大型 cassandra 表 约 4 02 亿条目和 84 列 但得到的结果不一致 最初的要求是将一些列从该表复制到另一个表 复制数据后 我注意到新表中的一些条目丢失了 为了验证我是否对大型源表进行了计数 但
  • 安卓框架。它是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 Android 框架有几个问题 有人可以回答吗 他们 Android 框架有什么作用 做 它的工作是什么 这些经理是什么 活动经
  • 在 Perl CGI 中分段 AJAX 响应?

    perl cgi 脚本是否可以将其 AJAX 响应分段为多个单独的 HTTP 响应 假设我有这段代码 xmlhttp new XMLHttpRequest xmlhttp onreadystatechange function if xml
  • 如何通过 StructureMap 映射使用 IRepository 约定

    StructureMap 中是否有一种方法可以用一行或约定进行这种重复映射 For
  • 为什么 Dapper 的 .Execute(...) 返回一个 int ?

    任何人都知道为什么 Dapper 返回一个 int Execute 我在任何地方都找不到这个记录 该整数表示受查询影响的行数 它返回一个整数 以便您知道查询是否有效 如果返回零并且您期望某些内容发生变化 那么您就知道存在问题
  • ReadTheDocs 和 autodoc 在构建期间无法找到我的包

    我一直在尝试在 readthedocs 上为我的第一个 python 包 QutiePy 构建文档 在本地构建文档工作正常 但是当我尝试在 readthedocs 上构建时 autodoc 无法填充我的部分并给出以下警告 WARNING a
  • 创建 Node.js Express 应用程序时出错。找不到

    我正在尝试在 WebStorm 中创建一个 node js 项目 你能告诉我我在这里缺少什么吗 得到了解决方案https intellij support jetbrains com hc en us community posts 115
  • C# 中的转义引号以供 JavaScript 使用

    我有一个 ASP Net Web 处理程序 它以 JSON 格式返回查询结果 public static String dt2JSON DataTable dt String s rows if dt Rows Count gt 0 for
  • matplotlib 的 plt.acorr 中自相关图的错误?

    我正在用 python 绘制自相关 我使用了三种方法来做到这一点 1 pandas 2 matplotlib 3 statsmodels 我发现我从 matplotlib 得到的图与其他两个不一致 代码是 from statsmodels
  • 记录到文件还是数据库更好?

    我们仍在使用旧的经典 ASP 并且希望在用户在我们的应用程序中执行某些操作时进行记录 我们将编写一个通用子例程来获取我们想要记录的详细信息 我们是否应该使用以下命令将其记录到 txt 文件中FileSystemObject或者将其记录到 M