| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- 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);
- }
- }
- }
- }
|