using Elsa.Common; using Microsoft.Extensions.Logging; namespace Elsa.Alterations.Core.Models; /// /// Represents a log of alterations. /// public class AlterationLog { private readonly ISystemClock _systemClock; private readonly List _logEntries = new(); /// /// Initializes a new instance of the class. /// public AlterationLog(ISystemClock systemClock) { _systemClock = systemClock; } /// /// Gets the log entries. /// public IReadOnlyCollection LogEntries => _logEntries.ToList().AsReadOnly(); /// /// Adds a log entry. /// /// The message. /// The log level. /// The event that generated the log entry. public void Add(string message, LogLevel logLevel = LogLevel.Information, string? eventName = null) { var entry = new AlterationLogEntry(message, logLevel, _systemClock.UtcNow, eventName); _logEntries.Add(entry); } /// /// Adds a set of log entries. /// /// public void AddRange(IEnumerable entries) => _logEntries.AddRange(entries); }