log流水表的设计方法

在很多的业务中,有流水日志的场景。举例来说:每取钱一次,余额就会变动一次,如果希望保留这个余额的变动,就需要在每次变化的时候考虑记录流水。
流水一般会出现的场景:(1)的确存在流水记录:例如登录流水、审核流水等 (2)重点信息的修改,保留前一个快照流水:例如账户余额的变动、用户密码的变动等
对于第一种场景的流水表设计,一般按照实际情况设计
对于第二种场景的流水表设计,最简单的方式就是原表COPY,但是多两个字段(1)主键 log_id,因为同一条记录有多次的变更,所以原来的主键无法作为主键使用(2)record_time:保留这一条流水的记录 进入流水表的当时时间
但是对于在复制环境中,第二种场景有些不一样。因为所有的 复制环境表,一般会要求 有数据最后修改时间 rep_time和一个维护rep_time的触发器。这个设计时间上就替代了record_time。 所以在这个情况下的设计,要求无需record_time,需要有一个old_rep_time,保留原来表的rep_time.
最后,说明一下流水的实现。很多开发喜欢使用触发器来处理流水,但是我们依然建议在程序中实现保留流水,而不适用触发器。触发器是对表级别来说的,无法对业务功能单独分开。一般情况下,触发器可以正常维护,但是如果这个表需要大量更新数据,但是这个更新又不想记录流水的时候,此时有触发器就非常麻烦,因为正是环境的触发器轻易是无法disable的。那么就无法实现删除大量修改数据不记录流水的场景,而且也会严重影响表的更新速度。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/617982/viewspace-2136640/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/617982/viewspace-2136640/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用log4net进行日志记录的基本步骤如下: 1. 引入log4net库 在你的项目中引入log4net库,可以通过NuGet包管理器或手动添加dll文件的方式进行引入。 2. 配置log4net 在项目中添加一个log4net配置文件,命名为log4net.config或者其他名称,文件的格式可以是XML或者properties格式。在配置文件中设置日志记录器的级别、目的地(如控制台、文件、数据库等)、日志输出格式等信息。 3. 初始化log4net 在程序的入口处,通过log4net.Config.XmlConfigurator.Configure()或者其他方法进行log4net的初始化。 4. 记录日志 在需要记录日志的地方,通过log4net的ILog接口获取一个日志记录器,并使用不同级别的方法(如Debug、Info、Error等)记录不同级别的日志信息。 示例代码如下: ```csharp using log4net; namespace MyNamespace { public class MyClass { // 获取日志记录器 private static readonly ILog log = LogManager.GetLogger(typeof(MyClass)); public void MyMethod() { // 记录日志 log.Debug("debug message"); log.Info("info message"); log.Warn("warn message"); log.Error("error message"); log.Fatal("fatal message"); } } } ``` 需要注意的是,log4net的配置文件需要位于应用程序的根目录或者其他指定目录下,并且在初始化log4net之前必须加载配置文件。另外,log4net的日志记录器名称通常是使用类的全名(包括命名空间)作为前缀,以便于在配置文件中对不同的日志记录器进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值