?? 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 + -