|
|
@@ -0,0 +1,108 @@
|
|
|
+using GreenTree.Nachtragsmanagement.Core;
|
|
|
+using GreenTree.Nachtragsmanagement.Core.Domain.Logging;
|
|
|
+using System;
|
|
|
+using System.Collections;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+
|
|
|
+namespace GreenTree.Nachtragsmanagement.Services.Logging
|
|
|
+{
|
|
|
+ public static class LoggingExtensions
|
|
|
+ {
|
|
|
+ public static void Debug(this ILogger logger, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ FilteredLog(logger, LogLevel.Debug, message, exception, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void Information(this ILogger logger, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ FilteredLog(logger, LogLevel.Information, message, exception, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void Warning(this ILogger logger, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ FilteredLog(logger, LogLevel.Warning, message, exception, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void Error(this ILogger logger, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ FilteredLog(logger, LogLevel.Error, message, exception, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void Fatal(this ILogger logger, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ FilteredLog(logger, LogLevel.Fatal, message, exception, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void FilteredLog(ILogger logger, LogLevel level, string message, Exception exception = null,
|
|
|
+ Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ //don't log thread abort exception
|
|
|
+ if (exception is System.Threading.ThreadAbortException)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (logger.IsEnabled(level))
|
|
|
+ {
|
|
|
+ var fullMessage = exception == null
|
|
|
+ ? string.Empty
|
|
|
+ : exception.ToString();
|
|
|
+
|
|
|
+ logger.InsertLog(level, message, null, fullMessage, user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void Entity(this ILogger logger, BaseEntity entity, LogEntityActivity activity, Core.Domain.User.User user = null)
|
|
|
+ {
|
|
|
+ if (entity == null)
|
|
|
+ return;
|
|
|
+
|
|
|
+ var header = String.Empty;
|
|
|
+ var body = String.Empty;
|
|
|
+
|
|
|
+ switch (activity)
|
|
|
+ {
|
|
|
+ case LogEntityActivity.Insert:
|
|
|
+ header = String.Format("Entität \"{0}\" wurde hinzugefügt", entity.GetType().Name);
|
|
|
+ break;
|
|
|
+ case LogEntityActivity.Update:
|
|
|
+ header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde geändert", entity.GetType().Name, entity.Id);
|
|
|
+ break;
|
|
|
+ case LogEntityActivity.Delete:
|
|
|
+ header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde gelöscht", entity.GetType().Name, entity.Id);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (activity == LogEntityActivity.Delete)
|
|
|
+ logger.InsertLog(LogLevel.Information, header, entity, String.Empty, user);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var properties = entity.GetType().GetProperties(System.Reflection.BindingFlags.GetProperty);
|
|
|
+
|
|
|
+ foreach (var property in properties)
|
|
|
+ {
|
|
|
+ if (!property.PropertyType.Namespace.StartsWith("System")) continue;
|
|
|
+
|
|
|
+ if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType) && property.PropertyType != typeof(string))
|
|
|
+ {
|
|
|
+ var collection = property.GetValue(entity, null) as IEnumerable;
|
|
|
+
|
|
|
+ body += String.Format("\t{0} = {1}\n", property.Name, String.Join(", ", collection));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ body += String.Format("\t{0} = {1}\n", property.Name, property.GetValue(entity));
|
|
|
+ }
|
|
|
+
|
|
|
+ var fullMessage = String.Format("{0}:\n{1}", header, body);
|
|
|
+
|
|
|
+ logger.InsertLog(LogLevel.Information, header, entity, String.Empty, user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|