Projektdateien hinzufügen.
This commit is contained in:
60
FileinterfaceCronScheduler/Scheduler/JobLog.cs
Normal file
60
FileinterfaceCronScheduler/Scheduler/JobLog.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace FileInterface.Scheduler
|
||||
{
|
||||
public sealed class JobLogEntry
|
||||
{
|
||||
public DateTime Timestamp { get; set; }
|
||||
public string JobType { get; set; }
|
||||
public string JobId { get; set; }
|
||||
public string JobName { get; set; }
|
||||
public string Level { get; set; }
|
||||
public string Message { get; set; }
|
||||
}
|
||||
|
||||
public sealed class JobLog
|
||||
{
|
||||
private readonly object _sync = new object();
|
||||
private readonly Queue<JobLogEntry> _entries = new Queue<JobLogEntry>();
|
||||
private readonly int _maxEntries;
|
||||
|
||||
public JobLog(int maxEntries)
|
||||
{
|
||||
_maxEntries = Math.Max(100, maxEntries);
|
||||
}
|
||||
|
||||
public void Info(CronJobConfig job, string message) { Add("CRON", job == null ? "" : job.Id, job == null ? "" : job.Name, "INFO", message); }
|
||||
public void Error(CronJobConfig job, string message) { Add("CRON", job == null ? "" : job.Id, job == null ? "" : job.Name, "ERROR", message); }
|
||||
public void Info(WatcherJobConfig job, string message) { Add("WATCHER", job == null ? "" : job.Id, job == null ? "" : job.Name, "INFO", message); }
|
||||
public void Error(WatcherJobConfig job, string message) { Add("WATCHER", job == null ? "" : job.Id, job == null ? "" : job.Name, "ERROR", message); }
|
||||
public void SystemInfo(string message) { Add("SYSTEM", "", "System", "INFO", message); }
|
||||
public void SystemError(string message) { Add("SYSTEM", "", "System", "ERROR", message); }
|
||||
|
||||
public IList<JobLogEntry> GetLatest(int limit)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
return _entries.Reverse().Take(Math.Max(1, Math.Min(limit, _maxEntries))).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private void Add(string jobType, string jobId, string jobName, string level, string message)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
_entries.Enqueue(new JobLogEntry
|
||||
{
|
||||
Timestamp = DateTime.Now,
|
||||
JobType = jobType ?? "",
|
||||
JobId = jobId ?? "",
|
||||
JobName = jobName ?? "",
|
||||
Level = level,
|
||||
Message = message ?? ""
|
||||
});
|
||||
while (_entries.Count > _maxEntries) _entries.Dequeue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user