mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-14 18:57:39 -07:00
moved log to object db.
This commit is contained in:
parent
71dcd623f7
commit
b3c6db5997
21 changed files with 157 additions and 321 deletions
|
@ -2,23 +2,20 @@
|
|||
using NLog.Config;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
using NLog.Targets.Wrappers;
|
||||
using NzbDrone.Common;
|
||||
using PetaPoco;
|
||||
|
||||
namespace NzbDrone.Core.Instrumentation
|
||||
{
|
||||
|
||||
public class DatabaseTarget : Target
|
||||
{
|
||||
private readonly IDatabase _database;
|
||||
private readonly ILogRepository _repository;
|
||||
|
||||
public DatabaseTarget(IDatabase database)
|
||||
public DatabaseTarget(ILogRepository repository)
|
||||
{
|
||||
_database = database;
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
|
||||
public void Register()
|
||||
{
|
||||
LogManager.Configuration.AddTarget("DbLogger", this);
|
||||
|
@ -62,7 +59,7 @@ namespace NzbDrone.Core.Instrumentation
|
|||
|
||||
log.Level = logEvent.Level.Name;
|
||||
|
||||
_database.Insert(log);
|
||||
_repository.Insert(log);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +1,12 @@
|
|||
using System;
|
||||
using PetaPoco;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using Sqo.Attributes;
|
||||
|
||||
namespace NzbDrone.Core.Instrumentation
|
||||
{
|
||||
[TableName("Logs")]
|
||||
[PrimaryKey("LogId", autoIncrement = true)]
|
||||
public class Log
|
||||
public class Log : ModelBase
|
||||
{
|
||||
|
||||
public Int64 LogId { get; protected set; }
|
||||
|
||||
[Text]
|
||||
public string Message { get; set; }
|
||||
|
||||
public DateTime Time { get; set; }
|
||||
|
@ -18,11 +15,11 @@ namespace NzbDrone.Core.Instrumentation
|
|||
|
||||
public string Method { get; set; }
|
||||
|
||||
[Text]
|
||||
public string Exception { get; set; }
|
||||
|
||||
public string ExceptionType { get; set; }
|
||||
|
||||
public String Level { get; set; }
|
||||
|
||||
}
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using DataTables.Mvc.Core.Helpers;
|
||||
using DataTables.Mvc.Core.Models;
|
||||
using NLog;
|
||||
using NzbDrone.Common;
|
||||
using PetaPoco;
|
||||
|
||||
namespace NzbDrone.Core.Instrumentation
|
||||
{
|
||||
public class LogProvider
|
||||
{
|
||||
private readonly IDatabase _database;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EnvironmentProvider _environmentProvider;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public LogProvider(IDatabase database, DiskProvider diskProvider, EnvironmentProvider environmentProvider)
|
||||
{
|
||||
_database = database;
|
||||
_diskProvider = diskProvider;
|
||||
_environmentProvider = environmentProvider;
|
||||
}
|
||||
|
||||
public List<Log> GetAllLogs()
|
||||
{
|
||||
return _database.Fetch<Log>();
|
||||
}
|
||||
|
||||
public IList<Log> TopLogs(int count)
|
||||
{
|
||||
var logs = _database.Fetch<Log>("SELECT TOP " + count + " * FROM Logs ORDER BY Time Desc");
|
||||
logs.Add(new Log
|
||||
{
|
||||
Time = DateTime.Now.AddYears(-100),
|
||||
Level = "Info",
|
||||
Logger = "Core.Instrumentation.LogProvider",
|
||||
Message = String.Format("Number of logs currently shown: {0}. More may exist, check 'All' to see everything", Math.Min(count, logs.Count))
|
||||
});
|
||||
|
||||
return logs;
|
||||
}
|
||||
|
||||
public virtual Page<Log> GetPagedItems(DataTablesPageRequest pageRequest)
|
||||
{
|
||||
var query = Sql.Builder
|
||||
.Select(@"*")
|
||||
.From("Logs");
|
||||
|
||||
var startPage = (pageRequest.DisplayLength == 0) ? 1 : pageRequest.DisplayStart / pageRequest.DisplayLength + 1;
|
||||
|
||||
if (!string.IsNullOrEmpty(pageRequest.Search))
|
||||
{
|
||||
var whereClause = string.Join(" OR ", SqlBuilderHelper.GetSearchClause(pageRequest));
|
||||
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
query.Append("WHERE " + whereClause, "%" + pageRequest.Search + "%");
|
||||
}
|
||||
|
||||
var orderBy = string.Join(",", SqlBuilderHelper.GetOrderByClause(pageRequest));
|
||||
|
||||
if (!string.IsNullOrEmpty(orderBy))
|
||||
{
|
||||
query.Append("ORDER BY " + orderBy);
|
||||
}
|
||||
|
||||
return _database.Page<Log>(startPage, pageRequest.DisplayLength, query);
|
||||
}
|
||||
|
||||
public virtual long Count()
|
||||
{
|
||||
return _database.Single<long>(@"SELECT COUNT(*) from Logs");
|
||||
}
|
||||
|
||||
public void DeleteAll()
|
||||
{
|
||||
_database.Delete<Log>("");
|
||||
_diskProvider.DeleteFile(_environmentProvider.GetLogFileName());
|
||||
_diskProvider.DeleteFile(_environmentProvider.GetArchivedLogFileName());
|
||||
Logger.Info("Cleared Log History");
|
||||
}
|
||||
|
||||
public void Trim()
|
||||
{
|
||||
_database.Delete<Log>("WHERE Time < @0", DateTime.Now.AddDays(-30).Date);
|
||||
Logger.Debug("Logs have been trimmed, events older than 30 days have been removed");
|
||||
}
|
||||
}
|
||||
}
|
25
NzbDrone.Core/Instrumentation/LogRepository.cs
Normal file
25
NzbDrone.Core/Instrumentation/LogRepository.cs
Normal file
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using NzbDrone.Core.Datastore;
|
||||
|
||||
namespace NzbDrone.Core.Instrumentation
|
||||
{
|
||||
public interface ILogRepository : IBasicRepository<Log>
|
||||
{
|
||||
void Trim();
|
||||
}
|
||||
|
||||
public class LogRepository : BasicRepository<Log>, ILogRepository
|
||||
{
|
||||
public LogRepository(IObjectDatabase objectDatabase)
|
||||
: base(objectDatabase)
|
||||
{
|
||||
}
|
||||
|
||||
public void Trim()
|
||||
{
|
||||
var oldIds = Queryable.Where(c => c.Time < DateTime.Now.AddDays(-30).Date).Select(c => c.OID);
|
||||
DeleteMany(oldIds);
|
||||
}
|
||||
}
|
||||
}
|
39
NzbDrone.Core/Instrumentation/LogService.cs
Normal file
39
NzbDrone.Core/Instrumentation/LogService.cs
Normal file
|
@ -0,0 +1,39 @@
|
|||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common;
|
||||
|
||||
namespace NzbDrone.Core.Instrumentation
|
||||
{
|
||||
public interface ILogService
|
||||
{
|
||||
void DeleteAll();
|
||||
void Trim();
|
||||
}
|
||||
|
||||
public class LogService : ILogService
|
||||
{
|
||||
private readonly ILogRepository _logRepository;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EnvironmentProvider _environmentProvider;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public LogService(ILogRepository logRepository, DiskProvider diskProvider,
|
||||
EnvironmentProvider environmentProvider, Logger logger)
|
||||
{
|
||||
_logRepository = logRepository;
|
||||
_diskProvider = diskProvider;
|
||||
_environmentProvider = environmentProvider;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void DeleteAll()
|
||||
{
|
||||
_logRepository.Purge();
|
||||
}
|
||||
|
||||
public void Trim()
|
||||
{
|
||||
_logRepository.Trim();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,11 +7,11 @@ namespace NzbDrone.Core.Instrumentation
|
|||
{
|
||||
public class TrimLogsJob : IJob
|
||||
{
|
||||
private readonly LogProvider _logProvider;
|
||||
private readonly LogService _logService;
|
||||
|
||||
public TrimLogsJob(LogProvider logProvider)
|
||||
public TrimLogsJob(LogService logService)
|
||||
{
|
||||
_logProvider = logProvider;
|
||||
_logService = logService;
|
||||
}
|
||||
|
||||
public string Name
|
||||
|
@ -26,7 +26,7 @@ namespace NzbDrone.Core.Instrumentation
|
|||
|
||||
public virtual void Start(ProgressNotification notification, dynamic options)
|
||||
{
|
||||
_logProvider.Trim();
|
||||
_logService.Trim();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue