public override void Log(ExceptionLoggerContext context)
        {
            var dict = new Dictionary <string, object>();

            string userId, userName;
            var    user = context.RequestContext.Principal as ClaimsPrincipal;

            Helpers.GetUserData(dict, user, out userId, out userName);

            string location;

            Helpers.GetLocationForApiCall(context.RequestContext, dict, out location);

            var errorId = Guid.NewGuid().ToString();

            // This is here because the Logger is called BEFORE the Handler in the
            //Web API exception pipeline
            context.Exception.Data.Add("ErrorId", errorId);

            var logEntry = new FlogDetail()
            {
                CorrelationId  = errorId,
                Product        = _productName,
                Layer          = "API",
                Location       = location,
                Timestamp      = DateTime.Now,
                Hostname       = Environment.MachineName,
                Exception      = context.Exception,
                UserId         = userId,
                UserName       = userName,
                AdditionalInfo = dict
            };

            Flogger.WriteError(logEntry);
        }
Example #2
0
 private static void WriteMessage()
 {
     if (!string.IsNullOrEmpty(_message))
     {
         var d = Flogger.GetFlogDetail(_message, null);
         Flogger.WriteDiagnostic(d);
         WriteColor($"\n {_message}", ConsoleColor.DarkGreen);
         _message = "";
     }
 }
Example #3
0
 private static void WriteError()
 {
     if (!string.IsNullOrEmpty(_error))
     {
         var d = Flogger.GetFlogDetail(_error, null);
         Flogger.WriteError(d);
         WriteColor($"\n Error: {_error}", ConsoleColor.DarkRed);
         _error = "";
     }
 }
        public static void LogWebError(string product, string layer, Exception ex)
        {
            string userId, userName, location;
            var    webInfo = GetWebFloggingData(out userId, out userName, out location);

            var errorInfo = new FlogDetail()
            {
                Product       = product, Layer = layer,
                Location      = location, UserId = userId, UserName = userName,
                Hostname      = Environment.MachineName,
                CorrelationId = HttpContext.Current.Session.SessionID,
                Exception     = ex, AdditionalInfo = webInfo
            };

            Flogger.WriteError(errorInfo);
        }
Example #5
0
        internal static void LogIt(FlogDetail logEntry, string endpoint)
        {
            switch (endpoint)
            {
            case "Performance":
                Flogger.WritePerf(logEntry);
                break;

            case "Diagnostic":
                Flogger.WriteDiagnostic(logEntry);
                break;

            case "Error":
                Flogger.WriteError(logEntry);
                break;

            default:
                return;
            }
        }
Example #6
0
        public static void LogWebUsage(string product, string layer, string activityName)
        {
            string userId, userName, location;
            var    webInfo = GetWebFloggingData(out userId, out userName, out location);

            var usageInfo = new FlogInfo()
            {
                Product        = product,
                Layer          = layer,
                Location       = location,
                UserId         = userId,
                UserName       = userName,
                Hostname       = Environment.MachineName,
                CorrelationId  = HttpContext.Current.Session.SessionID,
                Message        = activityName,
                AdditionalInfo = webInfo
            };

            Flogger.WriteUsage(usageInfo);
        }
        public static void LogWebDiagnostic(string product, string layer, string message,
                                            Dictionary <string, object> diagnosticInfo = null)
        {
            var writeDiagnostics = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableDiagnostics"]);

            if (!writeDiagnostics)  // doing this to avoid going through all the data - user, session, etc.
            {
                return;
            }

            string userId, userName, location;
            var    webInfo = GetWebFloggingData(out userId, out userName, out location);

            if (diagnosticInfo != null)
            {
                foreach (var key in diagnosticInfo.Keys)
                {
                    webInfo.Add(key, diagnosticInfo[key]);
                }
            }

            var diagInfo = new FlogDetail()
            {
                Product        = product,
                Layer          = layer,
                Location       = location,
                Timestamp      = DateTime.Now,
                UserId         = userId,
                UserName       = userName,
                Hostname       = Environment.MachineName,
                CorrelationId  = HttpContext.Current.Session.SessionID,
                Message        = message,
                AdditionalInfo = webInfo
            };

            Flogger.WriteDiagnostic(diagInfo);
        }
        static void Main(string[] args)
        {
            var fd = GetFullLogDetail("Starting the application");

            Flogger.WriteDiagnosticLog(fd);

            var tracker = new PerformanceTracker(
                name: $"{nameof(FloggingConsole)}_Execution",
                userId: "",
                userName: fd.UserName,
                location: fd.Location,
                product: fd.Product,
                layer: fd.Layer
                );

            Thread.Sleep(25);

            try {
                var fakeException = new Exception("Soemthing bad has happened!");
                fakeException.Data.Add("input parameter", "nothing to see here");
                throw fakeException;
            }
            catch (Exception ex) {
                fd = GetFullLogDetail("", ex);
                Flogger.WriteErrorLog(fd);
            }

            Thread.Sleep(25);

            fd = GetFullLogDetail("Used flogging console");
            Flogger.WriteUsageLog(fd);

            fd = GetFullLogDetail("Stopping application");
            Flogger.WriteDiagnosticLog(fd);

            tracker.Stop();
        }
 // Requires EnableDiagnostics=true in web.config AppSettings
 public void Write([FromBody] FlogDetail logEntry)
 {
     Flogger.WriteDiagnostic(logEntry);
 }
 public void Write([FromBody] FlogDetail logEntry)
 {
     Flogger.WriteUsage(logEntry);
 }
Example #11
0
        static void Main(string[] args)
        {
            var fd = GetFlogDetail("starting application", null);

            Flogger.WriteDiagnostic(fd);

            var tracker = new PerfTracker("FloggerConsole_Execution", "", fd.UserName,
                                          fd.Location, fd.Product, fd.Layer);

            //try
            //{
            //    var ex = new Exception("Something bad has happened!");
            //    ex.Data.Add("input param", "nothing to see here");
            //    throw ex;
            //}
            //catch (Exception ex)
            //{
            //    fd = GetFlogDetail("", ex);
            //    Flogger.WriteError(fd);
            //}
            var connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();

            using (var db = new SqlConnection(connStr))
            {
                db.Open();
                try
                {
                    //RAW ADO.NET
                    //var rawAdoSp = new SqlCommand("CreateNewCustomer", db)
                    //{
                    //    CommandType = System.Data.CommandType.StoredProcedure
                    //};
                    //rawAdoSp.Parameters.Add(new SqlParameter("@Name", "waytoolongforitsowngood"));
                    //rawAdoSp.Parameters.Add(new SqlParameter("@TotalPurchases", 12000));
                    //rawAdoSp.Parameters.Add(new SqlParameter("@TotalReturns", 100.50M));
                    //rawAdoSp.ExecuteNonQuery();
                    var sp = new Sproc(db, "CreateNewCustomer");
                    sp.SetParam("@Name", "waytoolongforitsowngood");
                    sp.SetParam("@TotalPurchases", 12000);
                    sp.SetParam("@TotalReturns", 100.50M);
                    sp.ExecNonQuery();
                }
                catch (Exception ex)
                {
                    var efd = GetFlogDetail("", ex);
                    Flogger.WriteError(efd);
                }

                try
                {
                    // Dapper
                    //db.Execute("CreateNewCustomer", new
                    //{
                    //    Name = "dappernametoolongtowork",
                    //    TotalPurchases = 12000,
                    //    TotalReturns = 100.50M
                    //}, commandType: System.Data.CommandType.StoredProcedure);
                    // Wrapped Dapper
                    db.DapperProcNonQuery("CreateNewCustomer", new
                    {
                        Name           = "dappernametoolongtowork",
                        TotalPurchases = 12000,
                        TotalReturns   = 100.50M
                    });
                }
                catch (Exception ex)
                {
                    var efd = GetFlogDetail("", ex);
                    Flogger.WriteError(efd);
                }
            }
            var ctx = new CustomerDbContext();

            try
            {
                // Entity Framework
                var name           = new SqlParameter("@Name", "waytoolongforitsowngood");
                var totalPurchases = new SqlParameter("@TotalPurchases", 12000);
                var totalReturns   = new SqlParameter("@TotalReturns", 100.50M);
                ctx.Database.ExecuteSqlCommand("EXEC dbo.CreateNewCustomer @Name, @TotalPurchases, @TotalReturns",
                                               name, totalPurchases, totalReturns);
            }
            catch (Exception ex)
            {
                var efd = GetFlogDetail("", ex);
                Flogger.WriteError(efd);
            }

            var customers = ctx.Customers.ToList();

            fd = GetFlogDetail($"{customers.Count} customers in the database", null);
            Flogger.WriteDiagnostic(fd);


            fd = GetFlogDetail("used flogging console", null);
            Flogger.WriteUsage(fd);

            fd = GetFlogDetail("stopping app", null);
            Flogger.WriteDiagnostic(fd);

            tracker.Stop();
        }
Example #12
0
 public void Write([FromBody] FlogDetail logEntry)
 {
     Flogger.WriteError(logEntry);
 }
Example #13
0
 public void Stop()
 {
     _stopwatch.Stop();
     _fullLogDetail.ElpasedMilliseconds = _stopwatch.ElapsedMilliseconds;
     Flogger.WritePerformanceLog(_fullLogDetail);
 }