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); }
private static void WriteMessage() { if (!string.IsNullOrEmpty(_message)) { var d = Flogger.GetFlogDetail(_message, null); Flogger.WriteDiagnostic(d); WriteColor($"\n {_message}", ConsoleColor.DarkGreen); _message = ""; } }
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); }
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; } }
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); }
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(); }
public void Write([FromBody] FlogDetail logEntry) { Flogger.WriteError(logEntry); }
public void Stop() { _stopwatch.Stop(); _fullLogDetail.ElpasedMilliseconds = _stopwatch.ElapsedMilliseconds; Flogger.WritePerformanceLog(_fullLogDetail); }