示例#1
0
 /// <summary>
 /// Saves records to file from the audit log that occured before the specified date
 /// </summary>
 /// <param name="beforeDate">Records older than this date are saved</param>
 private static void SaveAuditLog(DateTime beforeDate)
 {
     try
     {
         DateTime archiveTime = beforeDate.AddSeconds(-1);
         string   directory   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data\\Logs\\");
         string   fileName    = Path.Combine(directory, string.Format("audit_{0:yyyy-MM-dd}.log", archiveTime));
         using (StreamWriter fs = File.CreateText(fileName))
         {
             //WRITE HEADER TO FILE STREAM
             fs.WriteLine("AuditEventId,StoreId,EventDate,EventTypeId,Successful,UserId,RelatedId,RemoteIP,Comment");
             string    sql           = "SELECT " + AuditEvent.GetColumnNames(string.Empty) + " FROM ac_AuditEvents WHERE StoreId = @storeId AND EventDate < @beforeDate";
             Database  database      = Token.Instance.Database;
             DbCommand selectCommand = database.GetSqlStringCommand(sql);
             database.AddInParameter(selectCommand, "@storeId", System.Data.DbType.Int32, Token.Instance.StoreId);
             database.AddInParameter(selectCommand, "@beforeDate", System.Data.DbType.DateTime, beforeDate);
             //EXECUTE THE COMMAND
             using (IDataReader dr = database.ExecuteReader(selectCommand))
             {
                 while (dr.Read())
                 {
                     AuditEvent logEntry = new AuditEvent();
                     AuditEvent.LoadDataReader(logEntry, dr);
                     StringBuilder sb = new StringBuilder();
                     //SAVE RECORD TO FILE
                     sb.Append(logEntry.AuditEventId + ",");
                     sb.Append(logEntry.StoreId + ",");
                     sb.Append(string.Format("{0:yyyy-MM-dd HH:mm:ss},", logEntry.EventDate));
                     sb.Append(logEntry.EventTypeId + ",");
                     sb.Append((logEntry.Successful ? "1" : "0") + ",");
                     sb.Append(logEntry.UserId + ",");
                     sb.Append(logEntry.RelatedId + ",");
                     sb.Append(logEntry.RemoteIP + ",");
                     if (logEntry.Comment.Contains(","))
                     {
                         sb.Append("\"" + logEntry.Comment.Replace("\"", "\"\"") + "\"");
                     }
                     else
                     {
                         sb.Append(logEntry.Comment);
                     }
                     fs.WriteLine(sb.ToString());
                 }
                 dr.Close();
             }
             fs.Flush();
             fs.Close();
         }
     }
     catch
     {
         //ignore any error during logging
     }
 }