protected void Page_Load(object sender, EventArgs e) { LogEntity arg = new LogEntity(); arg.ID = 0;//日志ID arg.AssociateID = 12;////外部关联ID arg.ModuleName = "测试模块"; //模块名称 arg.LogContent = "测试添加日志"; //日志内容 arg.LogType = 0; //日志类型,0:普通信息,1:错误信息,2:警告信息 arg.OperateType = "添加";//操作类型表征含义自定义 arg.CreateTime = DateTime.Now; //记录时间 arg.Name = "测试记录人"; //记录人 arg.F1 = 0; //附件字段1 arg.F2 = String.Empty; //附件字段2 //ILog logFile = new FileLog(); //logFile.WriteLog(arg); //ILog logEvent = new EventLog(); //logEvent.WriteLog(arg); ILog logDB = new DBLog(); logDB.WriteLog(arg); IlogSearch log = new DBLog(); int totalSize = 0; int totalPage = 0; List<LogEntity> result = log.SearchLogCollection(" LogType = 0", " CreateTime DESC", 20, 2, out totalSize, out totalPage); //第一个参数为查询条件,第二个参数为排序条件,第三个参数为页面大小,第四个参数为当前页,第五个参数返回日志总条数,第六个参数返回日志总页数 GridView1.DataSource = log.SearchLogCollection("", ""); GridView1.DataBind(); }
/// <summary> /// 写入日志文件 /// </summary> /// <param name="arg">文件日志Entity</param> private void WriteLogFile(LogEntity arg) { //检查文件夹是否存在 CheckDirectoryExist(); // 检查文件是否存在 FileInfo fileInfo = CheckFileExist(); if (fileInfo.IsReadOnly == true) { fileInfo.IsReadOnly = false; } //创建只写文件流 using (FileStream fileStream = fileInfo.OpenWrite()) { //根据上面创建的文件流创建写数据流 StreamWriter writer = new StreamWriter(fileStream); //设置写数据流的起始位置为文件流的末尾 writer.BaseStream.Seek(0, SeekOrigin.End); //写入“Log Entry : ” writer.Write("Log Entry: \r\n"); //写入当前系统时间并换行 writer.Write("CreateTime:{0} \r\n", DateTime.Now); //写入日志类型并换行 writer.Write("LogType:{0} \r\n", Tools.FileLogType(arg.LogType)); //写入日志内容并换行 writer.Write("Content:{0} \r\n", Tools.OrganiseContent(arg)); //写入------------------------------------“并换行 writer.Write("------------------------------------\r\n"); //清空缓冲区内容,并把缓冲区内容写入基础流 writer.Flush(); //关闭写数据流 writer.Close(); } }
/// <summary> /// 写文件日志函数 /// </summary> /// <param name="arg">LogFileEntity文件日志Entity</param> /// <returns></returns> public bool WriteLog(LogEntity arg) { try { WriteLogFile(arg); return true; } catch (Exception ex) { throw ex; } }
/// <summary> /// 写系统日志函数 /// </summary> /// <param name="arg">LogEventEntity系统日志Entity</param> /// <returns></returns> public bool WriteLog(LogEntity arg) { try { string source = ConfigurationManager.AppSettings["Scal.IT.Log.EventSouce"].ToString(); System.Diagnostics.EventLog.WriteEntry(source, Tools.OrganiseContent(arg), Tools.EventLogType(arg.LogType)); return true; } catch (Exception ex) { throw ex; } }
/// <summary> /// 组织日志内容 /// </summary> /// <param name="arg"></param> /// <returns></returns> public static string OrganiseContent(LogEntity arg) { StringBuilder builder = new StringBuilder(); builder.Append("标识:" + arg.ID); builder.Append(" 外部关联ID:" + arg.AssociateID); builder.Append(" 模块名称:" + arg.ModuleName); builder.Append(" 日志内容:" + arg.LogContent); builder.Append(" 操作类型:" + arg.OperateType); builder.Append(" 记录时间:" + arg.CreateTime); builder.Append(" 记录人:" + arg.Name); builder.Append(" 附件字段1:" + arg.F1); builder.Append(" 附件字段2:" + arg.F2); return builder.ToString(); }
/// <summary> /// 添加一个 LogEntity 对象 /// </summary> /// <param name="obj">将要添加的 LogEntity 对象</param> public static void Insert(ref LogEntity obj) { //DbTransaction trans = null; //使用事务方式:声明事务对象 try { CLogDAL d = new CLogDAL(); d.Insert(ref obj); //trans = d.CreateTransaction(); //使用事务方式:创建事务 //d.Insert(ref obj, trans); //使用事务方式:操作数据 //如果DAL组件返回代码不为0,说明操作错误。 if (d.ReturnCode != 0) { throw new Exception(d.ReturnMessage); } //trans.Commit(); //使用事务方式:提交事务 } catch(Exception ex) { //trans.Rollback(); //使用事务方式:回滚事务 throw ex; } }
/// <summary> /// 写文件日志函数 /// </summary> /// <param name="arg">LogDBEntity数据库日志Entity</param> /// <returns></returns> public bool WriteLog(LogEntity arg) { LogEntity dbEntity = new LogEntity(); dbEntity = (LogEntity)arg; try { CLogBLL.Insert(ref dbEntity); return true; } catch (Exception ex) { if (!CLogBLL.AddTableAndProc()) { throw ex; } else { CLogBLL.Insert(ref dbEntity); return true; } } }
private LogEntity LoadFromReader(SqlDataReader reader) { if (reader != null && !reader.IsClosed) { LogEntity c = new LogEntity(); if (!Convert.IsDBNull(reader["ID"])) c.ID = Convert.ToInt64(reader["ID"]); //标识 if (!Convert.IsDBNull(reader["AssociateID"])) c.AssociateID = Convert.ToInt32(reader["AssociateID"]); //外部关联ID if (!Convert.IsDBNull(reader["ModuleName"])) c.ModuleName = Convert.ToString(reader["ModuleName"]); //模块名称 if (!Convert.IsDBNull(reader["LogContent"])) c.LogContent = Convert.ToString(reader["LogContent"]); //日志内容 if (!Convert.IsDBNull(reader["LogType"])) c.LogType = Convert.ToInt32(reader["LogType"]); //日志类型 0:正常信息,1:错误信息,2:警告信息 if (!Convert.IsDBNull(reader["OperateType"])) c.OperateType = Convert.ToString(reader["OperateType"]); //操作类型 if (!Convert.IsDBNull(reader["CreateTime"])) c.CreateTime = Convert.ToDateTime(reader["CreateTime"]); //记录时间 if (!Convert.IsDBNull(reader["Name"])) c.Name = Convert.ToString(reader["Name"]); //记录人 if (!Convert.IsDBNull(reader["F1"])) c.F1 = Convert.ToInt32(reader["F1"]); //附件字段1 if (!Convert.IsDBNull(reader["F2"])) c.F2 = Convert.ToString(reader["F2"]); //附件字段2 return c; } return null; }
private SqlParameter[] GetUpdateParameterValues(LogEntity obj) { return new SqlParameter[] { new SqlParameter("@ID", obj.ID), //标识 new SqlParameter("@AssociateID", obj.AssociateID), //外部关联ID new SqlParameter("@ModuleName", obj.ModuleName), //模块名称 new SqlParameter("@LogContent", obj.LogContent), //日志内容 new SqlParameter("@LogType", obj.LogType), //日志类型 0:正常信息,1:错误信息,2:警告信息 new SqlParameter("@OperateType", obj.OperateType), //操作类型 new SqlParameter("@CreateTime", obj.CreateTime), //记录时间 new SqlParameter("@Name", obj.Name), //记录人 new SqlParameter("@F1", obj.F1), //附件字段1 new SqlParameter("@F2", obj.F2) //附件字段2 }; }
private SqlParameter[] GetInsertParameterValues(LogEntity obj) { return new SqlParameter[] { GetSqlParameter("@ID", ParameterDirection.Output, obj.ID), //标识 GetSqlParameter("@AssociateID", ParameterDirection.Input, obj.AssociateID), //外部关联ID GetSqlParameter("@ModuleName", ParameterDirection.Input, obj.ModuleName), //模块名称 GetSqlParameter("@LogContent", ParameterDirection.Input, obj.LogContent), //日志内容 GetSqlParameter("@LogType", ParameterDirection.Input, obj.LogType), //日志类型 0:正常信息,1:错误信息,2:警告信息 GetSqlParameter("@OperateType", ParameterDirection.Input, obj.OperateType), //操作类型 GetSqlParameter("@CreateTime", ParameterDirection.Input, obj.CreateTime), //记录时间 GetSqlParameter("@Name", ParameterDirection.Input, obj.Name), //记录人 GetSqlParameter("@F1", ParameterDirection.Input, obj.F1), //附件字段1 GetSqlParameter("@F2", ParameterDirection.Input, obj.F2), //附件字段2 }; }
/// <summary> /// 用事务处理方式,在数据库中添加一个 LogEntity 对象 /// </summary> /// <param name="obj">将要添加的 LogEntity 对象</param> /// <param name="myTransaction">要关联的事务</param> public void Insert(ref LogEntity obj, DbTransaction myTransaction) { SqlParameter[] parameterValues = GetInsertParameterValues(obj); using (SqlDataReader reader = SqlHelper.ExecuteReader((SqlTransaction)myTransaction, CommandType.StoredProcedure, "p_Scal_IT_Log_Insert", parameterValues)) { while (reader.Read()) { LoadReturnFromReader(reader); } reader.Close(); } if (_returnCode == 0) //返回代码为0,表示成功添加。 { obj.ID = (long) parameterValues[0].Value; //设置新添加对象的主键值 } }