如何使用 NLog/Log4Net 自动化数据库更改跟踪?

发布于 2024-07-22 21:04:23 字数 205 浏览 5 评论 0原文

我知道很多表审计方法。 有些是基于触发器的,需要审核每个表上的触发器。 有些有基于列数据类型的限制。 如何使用 NLog 或 Log4Net 等日志记录框架。 我希望我的日志(在表中)回答问题“此时谁将此表的此列从 val0 更新为 val1?”

我还没有决定使用 OR 映射器。 倾向于 NHibernate 或 EF。

提前致谢 !

I am aware of many table auditing methods. Some are trigger based and require triggers on each table to be audited. SOme have limitation based on column datatype. How can I use a logging framework like NLog or Log4Net. I want my log(in a table) to answer question " Who updated this column of this table from val0 to val1 at this time?"

I have not decided on a OR mapper yet. Inclining towards NHibernate or EF.

Thanks in advance !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖凝香 2024-07-29 21:04:23

如果您使用像 DAO 这样的模式(我在 Java 和 Hibernate 中成功使用它),您可以添加数据库中每个更改的条目。 如果您使用 Spring.NET 您可以使用 AOP 用于向访问数据库的 DAO 方法添加拦截器。

不管怎样,您可能想为 DAOs 包添加一个特殊的附加程序,因为它会非常冗长。

If you use a pattern like DAO (I use it successfully in Java with Hibernate) you can add an entry for every change in the database. If you use Spring.NET you can use AOP for adding interceptors to the methods of the DAOs accessing the database.

Anyway, you might want to add a special appender for the DAOs package because it would be very verbose.

简单 2024-07-29 21:04:23

维克多的答案是一流的,但我想补充一点,这可能很困难,具体取决于您的列->对象映射的工作方式。

如果您将表列映射到具有不同名称的对象属性和字段,那么我认为您将尝试解析 sql 信息以确定更新了哪一列。 例如,如果您更改了“Product.Price”的值,并且该值实际上映射到名为“final_price”的列,您的日志记录将不会与数据库中发生的情况完全匹配。

另外,这可能是错误的,但如果您通过 ORM 包处理断开连接的实体,我不确定更改跟踪信息是否可用。 我依稀记得我读到的一个问题,其中提到您列出的 ORM 之一正在更新每一列,因此当用户真正更新单个列时,似乎用户更改了表中的所有列。

Victors answer is top notch but I wanted to add that this may be hard depending on how your column->object mappings work.

If your mapping your table columns to object properties and fields with different names then I think you'll looking at trying to parse sql information to determine which column was updated. For example if your changed the value of "Product.Price" and that actually maps to a column named "final_price" your logging won't exactly match up to whats happening in the database.

Also this could be wrong but if your working with disconnected entities through an ORM package I'm not sure if change tracking information will be available. I vaguely remember a problem I read about where one of the ORMs you listed were updating every column so it appeared a user changed all the columns in the table when they really updated a single column.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文