📄 logsvr.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 + -