예제 #1
0
        public static void Log(DataAccessLoggerType type, ILoggerSink sink, DataAccessFootprint logData)
        {
            if (sink != null)
            {
                switch (type)
                {
                case DataAccessLoggerType.Console:
                    new ConsoleLogger(sink).Log(logData);
                    break;

                case DataAccessLoggerType.Database:
                    new DatabaseLogger(sink).Log(logData);
                    break;

                case DataAccessLoggerType.EventLog:
                    new EventLogLogger(sink).Log(logData);
                    break;

                case DataAccessLoggerType.AzureTable:
                    new AzureTableLogger(sink).Log(logData);
                    break;

                case DataAccessLoggerType.File:
                    new FileLogger(sink).Log(logData);
                    break;

                default:
                    return;
                }
            }
            else
            {
                new ConsoleLogger().Log(logData);
            }
        }
예제 #2
0
 public override void Log(DataAccessFootprint logDetails)
 {
     lock (logLocker)
     {
         if (_Sink == null)
         {
             Console.WriteLine("There is no File sink being setup");
         }
         else
         {
             try
             {
                 using (StreamWriter streamWriter = new StreamWriter(_Sink.FilePath))
                 {
                     streamWriter.WriteLine("Method Name : " + logDetails.MethodName
                                            + ", Message : " + logDetails.Message
                                            + ", Operation : " + logDetails.Operation
                                            + ", ReferralLibrary : " + logDetails.ReferralLibrary
                                            + ", SourceApplicationDomainName : " + logDetails.SourceApplicationDomainName
                                            + ", SourceMachineName : " + logDetails.SourceMachineName);
                     streamWriter.Close();
                 }
             }
             catch (Exception ex)
             {
                 Console.WriteLine("Data Access Sink Error : File Sink , Error : " + ex.Message);
             }
         }
     }
 }
예제 #3
0
 public override void Log(DataAccessFootprint logDetails)
 {
     lock (logLocker)
     {
         if (_Sink == null)
         {
             Console.WriteLine("There is no Event Log sink being setup");
         }
         else
         {
             try
             {
                 EventLog events = new EventLog();
                 events.Source      = logDetails.ReferralLibrary;
                 events.MachineName = logDetails.SourceMachineName;
                 events.WriteEntry("Method Name : " + logDetails.MethodName
                                   + ", Message : " + logDetails.Message
                                   + ", Operation : " + logDetails.Operation
                                   + ", ReferralLibrary : " + logDetails.ReferralLibrary
                                   + ", SourceApplicationDomainName : " + logDetails.SourceApplicationDomainName
                                   + ", SourceMachineName : " + logDetails.SourceMachineName);
             }
             catch (Exception ex)
             {
                 Console.WriteLine("Data Access Sink Error : Event Log Sink , Error : " + ex.Message);
             }
         }
     }
 }
예제 #4
0
 public DataAccessResult(DataAccessFootprint footprint)
 {
     this.Operation = footprint.Operation;
     this.Message   = footprint.Message;
     this.IsSuccess = footprint.IsSuccess;
     this.Objects   = new List <DataAccessOperationObjects>();
     this.LogData   = footprint;
 }
예제 #5
0
 public DataAccessResult(DataAccessFootprint footprint, ILoggerSink sink)
 {
     this.Operation = footprint.Operation;
     this.Message   = footprint.Message;
     this.IsSuccess = footprint.IsSuccess;
     this.Objects   = new List <DataAccessOperationObjects>();
     this.LogData   = footprint.AddSink(sink);
     this.Sink      = sink;
 }
예제 #6
0
 public AzureTableDataAccessLogger(DataAccessFootprint Data)
 {
     this.Operation                   = Data.Operation.ToString();
     this.MethodName                  = Data.MethodName;
     this.Message                     = Data.Message;
     this.PartitionKey                = "DataAccesLogging";
     this.ReferralLibrary             = Data.ReferralLibrary;
     this.RowKey                      = Data.DataAccessTransactionId.ToString();
     this.DataAccessTransactionId     = Data.DataAccessTransactionId;
     this.SourceApplicationDomainName = Data.SourceApplicationDomainName;
     this.SourceMachineName           = Data.SourceMachineName;
     this.Timestamp                   = DateTime.UtcNow;
 }
예제 #7
0
 public static DataAccessLoggerEntity ConvertToEntity(this DataAccessFootprint Data)
 {
     return(new DataAccessLoggerEntity()
     {
         DataAccessTransactionId = Data.DataAccessTransactionId,
         Message = Data.Message,
         MethodName = Data.MethodName,
         Operation = Data.Operation.ToString(),
         ReferralLibrary = Data.ReferralLibrary,
         SourceApplicationDomainName = Data.SourceApplicationDomainName,
         SourceMachineName = Data.SourceMachineName,
     });
 }
예제 #8
0
 public override void Log(DataAccessFootprint logDetails)
 {
     lock (logLocker)
     {
         if (_Sink != null)
         {
             Console.ForegroundColor = _Sink.ForegroundColor;
         }
         Console.WriteLine("Method Name : " + logDetails.MethodName
                           + ", Message : " + logDetails.Message
                           + ", Operation : " + logDetails.Operation
                           + ", ReferralLibrary : " + logDetails.ReferralLibrary
                           + ", SourceApplicationDomainName : " + logDetails.SourceApplicationDomainName
                           + ", SourceMachineName : " + logDetails.SourceMachineName + Environment.NewLine);
         Console.ForegroundColor = ConsoleColor.White;
     }
 }
예제 #9
0
 public override void Log(DataAccessFootprint logDetails)
 {
     lock (logLocker)
     {
         if (_Sink == null)
         {
             Console.WriteLine("There is no database sink being setup");
         }
         else
         {
             try
             {
                 LoggerDBContext db = new LoggerDBContext(_Sink.DatabaseConnectionString);
                 db.DataAccessLogger.Add(logDetails.ConvertToEntity());
                 db.SaveChanges();
             }
             catch (Exception ex)
             {
                 Console.WriteLine("Data Access Sink Error : Batabase Sink , Error : " + ex.Message);
             }
         }
     }
 }
예제 #10
0
        public override async void Log(DataAccessFootprint logDetails)
        {
            if (_Sink == null)
            {
                Console.WriteLine("There is no Azure Table Sink being setup");
            }
            else
            {
                try
                {
                    AzureTableDataAccessLogger azuretabledata = new AzureTableDataAccessLogger(logDetails);
                    CloudTable azuretable = this.SetupAccount()
                                            .CreateCloudTableClient()
                                            .GetTableReference(_Sink.AzureTableName);
                    await azuretable.CreateIfNotExistsAsync();

                    await azuretable.ExecuteAsync(TableOperation.InsertOrReplace(azuretabledata));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Data Access Sink Error : Azure Table Sink , Error : " + ex.Message);
                }
            }
        }
예제 #11
0
 public abstract void Log(DataAccessFootprint logDetails);