数据库操作日志

  public static class SqlLog
    {
        /// <summary>
        /// 日志文件夹路径
        /// </summary>
        private static string LogDic = HttpContext.Current.Server.MapPath("~/log/");

        /// <summary>
        /// 锁标识
        /// </summary>
        private static object obj = new object();

        /// <summary>
        /// 同步插入系统日志
        /// </summary>
        public static void WriteSQLLog(IDbCommand cmd)
        {
            try
            {
                string filePath = GetLogPath();
                string logText = GetLogText(cmd);

                lock (obj)
                {
                    using (StreamWriter streamWriter = File.Exists(filePath) ? File.AppendText(filePath) : File.CreateText(filePath))
                    {
                        streamWriter.WriteLine(logText);
                        streamWriter.Flush();
                    }
                }
            }
            catch
            {

            }
        }

        /// <summary>
        /// 异步插入日志
        /// </summary>
        public static void WriteSQLLogAsync(IDbCommand cmd)
        {
            Task.Factory.StartNew(obj => WriteSQLLog((IDbCommand)obj), cmd);
        }

        /// <summary>
        /// 取得日志路径文件
        /// </summary>
        public static string GetLogPath()
        {
            if (Directory.Exists(LogDic) == false)
            {
                Directory.CreateDirectory(LogDic);
            }
            return LogDic + string.Format(@"\{0}.log", DateTime.Now.ToString("yyyy-MM-dd"));
        }

        /// <summary>
        /// 获得日志内容
        /// </summary>
        private static string GetLogText(IDbCommand cmd)
        {
            StringBuilder sb = new StringBuilder();
            int index = 1;
            sb.AppendLine("******************************" + DateTime.Now + "*****************************************");
            sb.AppendLine("sql:" + cmd.CommandText);
            foreach (dynamic item in cmd.Parameters)
            {
                sb.AppendLine(string.Format("parm{0}:" + item.Value, index++));
            }
            return sb.ToString();
        }
    }
时间: 2024-08-30 13:00:13

数据库操作日志的相关文章

C#数据库操作通用方法类

平时使用的数据库操作类整理更新后备份,记录下来以供以后使用,并顺便分享给大家一起交流.直接上源码: 整个底层操作方法分为4个类,基础方法类:SqlBase 基础工具类:SqlTool 日志类:DbLog  和MSSQL操作类:MsSqlHelper. 由于平时工作未用到其他类型数据库,因此未整理其他数据库的操作类,以后用到的话会进行更新. 首先是通用的数据库底层操作方法整理: /// <summary> /// 数据库操作基础方法类 /// </summary> public cl

监控数据库DDL操作日志

背景 为了监控好生产环境下各个数据库服务器上DDL操作日志,便于运维工程师管控好风险,我们有必要关注当前实例下的所有的DDL操作. 测试环境 Microsoft SQL Server 2012 - 11.0.2218.0 (X64) Jun 12 2012 13:05:25 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) 操作步骤 第一步.

SSH基于Hibernate eventListener 事件侦听器的操作日志自动保存到数据库

在spring xml配置文件中添加配置,包含:model.listener 在model中增加需要写入数据库对应表的model 在auditLog.xml配置文件中配置自己项目中,需要进行日志记录的model类shortName,以及相关属性. 相关代码如下: 首先spring xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframew

异步往数据库中插入每个用户的增删改操作日志

[x] ++我们需要一个工具类++ 用工具类异步向数据库中插入用户的操作日志 工具类代码如下: package com.dp.api.util; import com.dp.common.dao.DaoUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframew

C# .NET数据库操作

C# .NET更智能的数据库操作的封装完整版(重构) 前述: 第一次发表文章,不过是对数据库简单的封装,主要是阐述下思路.那么在上篇文章,在大家的指导下和提出意见,并自己对代码进行了思考.在这两天我重构了新的框架,我觉得我写的可以称得上框架,为什么?请大家往下看.不过在项目中没有很多注释.笔者除了课余学习时候,大部分时间在完成学校的功课,没有许多时间,所以也就偷下懒,请大家体谅. 这次框架分为几个部分:拼接数据库语句.数据库执行.数据库连接控制.异常类.用户使用的DbHelper.等下我回用文字

mongodb复制集里查看主从操作日志oplog

MongoDB的replica set架构是通过一个日志来存储写操作的,这个日志就叫做 oplog .oplog.rs 是一个固定长度的 Capped Collection,它存在于local数据库中,用于记录replicaSets操作日志.在默认情况下,对于64位的MongoDB,oplog是比较大的,可以达到5%的磁盘空间,oplog的大小是可以通过mongod的参数 “ -oplogSize”来改变oplog的日志大小. oplog内容样例: > use local > show col

PHP中对数据库操作的封装

在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使写出的程序在很小的改动下就可以完成后台数据库的更改. <? class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表MySql,当为 2代表 SQL Server,为3时为ODBC或其它. var $dbHost; //数据库所在主机域名 va

系统操作日志设计(转)

前言 我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录.或者更新某条数据都需要跟踪到变化的内容.或者删除数据时需要记录谁删除了,何时删除了,以便误删后可以通过系统的XXX功能来恢复误删的数据. 我将这种功能称为操作日志 为什么要做操作日志? 其实上文也描述了一些,其主要目的就是跟踪到每一个用户在系统的操作行为,如对数据进行查询.新增.编辑或删除甚至是登录等行为.更进一步的理解可以说是对用户使用系统情况的跟踪,对数据的跟

mysql热备及查询mysql操作日志

mysql热备 1 查看mysql版本,保证主库低于等于从库 2 主库配置:   A 需要打开支持日志功能:log-bin=mysql-bin   B 提供server-id:server-id=1   C 重启mysql,进入后,分配复制从库的帐号 GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'backip' IDENTIFIED BY 'repuser';   D show master status;能看到二进制日志文件目前的Position