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