⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logsvr.cs

📁 日志管理类
💻 CS
字号:
using System;
using System.Data;

namespace CSS.LogManage
{
	/// <summary>
	/// LogSvr 的摘要说明
	/// 
	/// </summary>
	public class LogSvr :IDisposable
	{
		private string errMsg;
		private string connStr;
		private string dbType;

		public LogSvr(string connStr,string dbType)
		{
			this.connStr = connStr;
			this.dbType = dbType;
		}

		public string ErrMsg
		{
			get{return this.errMsg;}
		}

		#region 写系统日志   WriteSystemLog
		//日志记录写回数据库
		public bool SetValue(string Machine,OperType operType,int Module,string OperatorID,bool OperStatus,string Depname,string obj,string sqlStr,out DataSet dset)
		{
			bool successflag = false;
			string date,time;
			DataRow drow;
			DataColumn dc;
			DBOperBase.instance db = DBOperBase.instance.Instance(this.connStr,this.dbType);
			try
			{
				if(db == null)
				{
					throw new ApplicationException("未能获取数据库对象.");
				}
				db.Open();				
				if(!db.ExeSqlDataSet(sqlStr,null,null,out dset))
				{
					throw new ApplicationException(db.Errmsg);
				}
				//取客户端计算机名称
				//Machine = Dns.GetHostName();         //取本地主机名  
				//Machine = page.Request.UserHostName;   
				//Machine = page.Request.ServerVariables["REMOTE_HOST"].ToString(); 

				//赋一行数据
				drow   = dset.Tables[0].NewRow();
				drow["DepName"]      = Depname.Trim();                 //部门名称
				drow["Employee"]     = OperatorID.Trim();              //操作员编号
				drow["ComputerName"] = Machine.Trim();                 //机器名称
				drow["Module"]       = Module;                         //模块编号

				dc   = dset.Tables[0].Columns["SysDate"];                
				date = DateTime.Now.ToString("yyyy-MM-dd");
				drow["SysDate"] = Convert.ChangeType(date,dc.DataType);//操作日期
				time = DateTime.Now.ToString("HH:mm:ss");
				drow["SysTime"] = time.Trim();                         //操作时间
				drow["Doing"]   = (int)operType;                       //操作类型
				drow["Succ"]    = OperStatus;                          //操作结果
				drow["DetailContent"] = obj;                           //操作对象内容
				dset.Tables[0].Rows.Add(drow);

				successflag = true;
				return successflag;
			}
			catch(Exception e)
			{
				dset = null;
				this.errMsg = "写入数据库操作出错:" + e.Message;
				return successflag;
			}
			finally
			{
				if(db != null) db.Close();
			}
		}
	
		/// <summary>
		/// 写系统日志
		/// </summary>
		/// <param name="Machine">机器ip或机器名</param>
		/// <param name="operType">操作类型  进入(0)   退出(1)   读取(2)   新增(3)   生成(4)    修改(5)    删除(6)</param>
		/// <param name="Module">模块对应编号</param>
		/// <param name="OperatorID">操作员编号</param>
		/// <param name="OperStatus">操作状态  失败(false)    成功(true)</param>
		/// <param name="Depname">部门名称</param>
		/// <param name="obj"></param>
		/// <returns></returns>
		public bool WriteSystemLog(string Machine,OperType operType,int Module, string OperatorID,bool OperStatus,string Depname,string obj)
		{
			bool successflag = false;
			string sqlStr;
			DataSet ds = new DataSet();
			DBOperBase.instance db = null ; 
			db = DBOperBase.instance.Instance(this.connStr,this.dbType);  
			try
			{
				if(db == null) throw new ApplicationException("未能获取数据库对象");

				sqlStr = "SELECT * FROM Diary WHERE 1=2";

				if(!SetValue(Machine,operType,Module,OperatorID,OperStatus,Depname,obj,sqlStr,out ds))
					throw new ApplicationException(this.ErrMsg);

				db.Open();				
				db.BeginTrans();
				if(!db.UpdateDB(sqlStr,null,null,ds))
				{
					db.RollbackTrans();
					throw new ApplicationException(db.Errmsg);
				}
				db.CommitTrans();
				successflag = true;
				return successflag;
			}
			catch(Exception e)
			{
				this.errMsg = "写日志出错原因如下:" + e.Message;
				return successflag;
			}
			finally
			{
				if(db != null) db.Close();
				if(ds != null) ds.Dispose();
			}
		}
		#endregion

		#region  写异常日志
		/// <summary>
		/// 保存错误消息
		/// </summary>
		/// <param name="objid">消息模块</param>
		/// <param name="opitem">引发错误的方法</param>
		/// <param name="dt">错误产生时间</param>
		/// <param name="esource">错误来源</param>
		/// <param name="emessage">错误内容</param>
		/// <param name="empid"></param>
		/// <param name="depid"></param>
		/// <param name="ip">机器ip</param>
		/// <returns></returns>
		public bool WriteExpLog(string objid, string opitem, DateTime dt, string esource, string emessage, string empid, string depid,bool flag,string ip)
		{
			//连接数据库
			DBOperBase.instance db = DBOperBase.instance.Instance(connStr, dbType);
			if (db == null) throw new ApplicationException("未能获取数据库对象");	

			bool SuccessFlag = false;
		
			string sql = "";			
			string[] strQueryParams = null ;
			string[] strQueryValues = null ;

			try
			{
				sql = " insert into appException(objid,opitem,opdate,esource, emessage,empid, depid,succ,ip) " +
					" values (@objid,@opitem,@opdate,@esource,@emessage,@empid,@depid,@succ,@ip)";
				//参数设置
				strQueryParams = new string[9];				
				strQueryValues = new string[9];

				strQueryParams[0] = "@objid";
				strQueryValues[0] = objid;
				strQueryParams[1] = "@opitem";
				strQueryValues[1] = opitem;
				strQueryParams[2] = "@opdate";
				strQueryValues[2] = dt.ToString();
				strQueryParams[3] = "@esource";
				strQueryValues[3] = esource;
				strQueryParams[4] = "@emessage";
				strQueryValues[4] = emessage;
				strQueryParams[5] = "@empid";
				strQueryValues[5] = empid;
				strQueryParams[6] = "@depid";
				strQueryValues[6] = depid;
				strQueryParams[7] = "@succ";
				if(flag)
				{
					strQueryValues[7] = "1";
				}
				else
				{
					strQueryValues[7] = "0";
				}
				strQueryParams[8] = "@ip";
				strQueryValues[8] = ip;
			
				db.Open();
				db.BeginTrans();
				db.ExcuteSql(sql,strQueryParams,strQueryValues);
				db.CommitTrans();
				
				SuccessFlag = true;
				return SuccessFlag;
			}
			catch (Exception e)
			{
				this.errMsg = "写日志出错原因如下:" + e.Message;
				return SuccessFlag;
			}
			finally
			{
				if(db != null) db.Close();

			}
		}
		#endregion

		#region IDisposable 成员

		public void Dispose()
		{
			// TODO:  添加 LogSvr.Dispose 实现
		}

		#endregion
	}


	//定义一个枚举类型
	public enum OperType
	{
		LOAD,ENTRY,OPEN,NEW,ORIGIN,EDIT,DEL,SAVE,PRINT,AUDIT,ADD,DIF,REVIEW,BROKEN,ClEARPWD,PAY,UNPAY,CARDMANAGE,CARDENTRY,CARDQUERY
		//定义每个枚举实际的表示意义
		//LOAD:登陆
		//ENTRY:进入
		//OPEN:查询
		//NEW:新建
		//ORIGIN:生成
		//EDIT:编辑
		//DEL:删除
		//SAVE:保存
		//PRINT:打印
		//AUDIT:审核
		//DIF:加密文件
		//ADD:更新策略
		//REVIEW:获取许可证
		//BROKEN:启动自动服务
		//ClEARPWD:清空密码
		//CARDMANAGE:关闭自动服务

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -