| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using GreenTree.Nachtragsmanagement.Core;
- using GreenTree.Nachtragsmanagement.Core.Data;
- using GreenTree.Nachtragsmanagement.Core.Domain.Logging;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace GreenTree.Nachtragsmanagement.Services.Logging
- {
- /// <summary>
- /// Default logger
- /// </summary>
- public partial class DefaultLogger : ILogger
- {
- #region Fields
- private readonly IRepository<Log> _logRepository;
- private readonly IWebHelper _webHelper;
- #endregion
- #region Ctor
- /// <summary>
- /// Initializes a new instance of the DefaultLogger class
- /// </summary>
- public DefaultLogger(
- IRepository<Log> logRepository,
- IWebHelper webHelper)
- {
- this._logRepository = logRepository;
- this._webHelper = webHelper;
- }
- #endregion
- #region Methods
- /// <summary>
- /// Determines whether a log level is enabled
- /// </summary>
- /// <param name="level">Log level</param>
- /// <returns>Result</returns>
- public virtual bool IsEnabled(LogLevel level)
- {
- switch (level)
- {
- case LogLevel.Debug:
- return false;
- default:
- return true;
- }
- }
- /// <summary>
- /// Deletes a log item
- /// </summary>
- /// <param name="log">Log item</param>
- public virtual void DeleteLog(Log log)
- {
- if (log == null)
- throw new ArgumentNullException("log");
- _logRepository.Delete(log);
- }
- /// <summary>
- /// Clears a log
- /// </summary>
- public virtual void ClearLog()
- {
- var logs = _logRepository.Table.ToList();
- foreach (var logItem in logs)
- _logRepository.Delete(logItem);
- }
- /// <summary>
- /// Gets all log items
- /// </summary>
- /// <returns>Log item collection</returns>
- public IList<Log> GetAllLogs()
- {
- return _logRepository.Table.ToList();
- }
- /// <summary>
- /// Gets a log item
- /// </summary>
- /// <param name="logId">Log item identifier</param>
- /// <returns>Log item</returns>
- public virtual Log GetLogById(int logId)
- {
- if (logId == 0)
- return null;
- return _logRepository.GetById(logId);
- }
- /// <summary>
- /// Get log items by identifiers
- /// </summary>
- /// <param name="logIds">Log item identifiers</param>
- /// <returns>Log items</returns>
- public virtual IList<Log> GetLogByIds(int[] logIds)
- {
- if (logIds == null || logIds.Length == 0)
- return new List<Log>();
- var query = from l in _logRepository.Table
- where logIds.Contains(l.Id)
- select l;
- var logItems = query.ToList();
- //sort by passed identifiers
- var sortedLogItems = new List<Log>();
- foreach (int id in logIds)
- {
- var log = logItems.Find(x => x.Id == id);
- if (log != null)
- sortedLogItems.Add(log);
- }
- return sortedLogItems;
- }
- /// <summary>
- /// Inserts a log item
- /// </summary>
- /// <param name="logLevel">Log level</param>
- /// <param name="entity"></param>
- /// <param name="shortMessage">The short message</param>
- /// <param name="fullMessage">The full message</param>
- /// <param name="user">The user to associate log record with</param>
- /// <returns>A log item</returns>
- public virtual Log InsertLog(LogLevel logLevel, string shortMessage, BaseEntity entity = null, string fullMessage = "",
- Core.Domain.User.User user = null)
- {
- var log = new Log
- {
- LogLevel = logLevel,
- ShortMessage = shortMessage,
- FullMessage = fullMessage,
- IpAddress = _webHelper.GetCurrentIpAddress(),
- UserId = user == null
- ? null
- : (int?)user.Id,
- EntityId = entity == null
- ? null
- : (int?)entity.Id,
- EntityType = entity == null
- ? null
- : LoggingExtensions.GetTypeNameFromEfEntityType(entity),
- PageUrl = _webHelper.GetThisPageUrl(true),
- ReferrerUrl = _webHelper.GetUrlReferrer(),
- CreatedOnUtc = DateTime.UtcNow
- };
- _logRepository.Insert(log);
- return log;
- }
- #endregion
- }
- }
|