|
|
|
|
@ -1,9 +1,6 @@
@@ -1,9 +1,6 @@
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Runtime.Serialization; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using Microsoft.Azure.Documents; |
|
|
|
|
using Newtonsoft.Json; |
|
|
|
|
using Serilog.Events; |
|
|
|
|
using Newtonsoft.Json.Linq; |
|
|
|
|
|
|
|
|
|
namespace Bit.Admin.Models |
|
|
|
|
{ |
|
|
|
|
@ -14,18 +11,46 @@ namespace Bit.Admin.Models
@@ -14,18 +11,46 @@ namespace Bit.Admin.Models
|
|
|
|
|
public string Message { get; set; } |
|
|
|
|
public string MessageTruncated => Message.Length > 200 ? $"{Message.Substring(0, 200)}..." : Message; |
|
|
|
|
public string MessageTemplate { get; set; } |
|
|
|
|
public Error Exception { get; set; } |
|
|
|
|
public IDictionary<string, object> Properties { get; set; } |
|
|
|
|
public string Project => Properties?.ContainsKey("Project") ?? false ? Properties["Project"].ToString() : null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public class LogDetailsModel : LogModel |
|
|
|
|
{ |
|
|
|
|
public JObject Exception { get; set; } |
|
|
|
|
|
|
|
|
|
[JsonObject(MemberSerialization.OptIn)] |
|
|
|
|
public class Error : Exception, ISerializable |
|
|
|
|
public string ExceptionToString(JObject e) |
|
|
|
|
{ |
|
|
|
|
[JsonProperty(PropertyName = "error")] |
|
|
|
|
public string ErrorMessage { get; set; } |
|
|
|
|
if(e == null) |
|
|
|
|
{ |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var val = string.Empty; |
|
|
|
|
if(e["Message"] != null && e["Message"].ToObject<string>() != null) |
|
|
|
|
{ |
|
|
|
|
val += "Message:\n"; |
|
|
|
|
val += e["Message"] + "\n"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(e["StackTrace"] != null && e["StackTrace"].ToObject<string>() != null) |
|
|
|
|
{ |
|
|
|
|
val += "\nStackTrace:\n"; |
|
|
|
|
val += e["StackTrace"]; |
|
|
|
|
} |
|
|
|
|
else if(e["StackTraceString"] != null && e["StackTraceString"].ToObject<string>() != null) |
|
|
|
|
{ |
|
|
|
|
val += "\nStackTraceString:\n"; |
|
|
|
|
val += e["StackTraceString"]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(e["InnerException"] != null && e["InnerException"].ToObject<JObject>() != null) |
|
|
|
|
{ |
|
|
|
|
val += "\n\n\n=== Inner Exception ===\n\n\n"; |
|
|
|
|
val += ExceptionToString(e["InnerException"].ToObject<JObject>()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonConstructor] |
|
|
|
|
public Error() { } |
|
|
|
|
return val; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|