|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Linq.Dynamic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Web.Mvc;
|
|
|
|
|
using DataTables.Mvc.Core;
|
|
|
|
|
using DataTables.Mvc.Core.Models;
|
|
|
|
|
using NzbDrone.Common;
|
|
|
|
|
using NzbDrone.Core.Instrumentation;
|
|
|
|
|
using NzbDrone.Web.Models;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Web.Controllers
|
|
|
|
|
{
|
|
|
|
|
public class LogController : Controller
|
|
|
|
|
{
|
|
|
|
|
private readonly LogProvider _logProvider;
|
|
|
|
|
private readonly EnvironmentProvider _environmentProvider;
|
|
|
|
|
private readonly DiskProvider _diskProvider;
|
|
|
|
|
|
|
|
|
|
public LogController(LogProvider logProvider, EnvironmentProvider environmentProvider,
|
|
|
|
|
DiskProvider diskProvider)
|
|
|
|
|
{
|
|
|
|
|
_logProvider = logProvider;
|
|
|
|
|
_environmentProvider = environmentProvider;
|
|
|
|
|
_diskProvider = diskProvider;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FileContentResult File()
|
|
|
|
|
{
|
|
|
|
|
string log = string.Empty;
|
|
|
|
|
|
|
|
|
|
if (_diskProvider.FileExists(_environmentProvider.GetArchivedLogFileName()))
|
|
|
|
|
{
|
|
|
|
|
log = _diskProvider.ReadAllText(_environmentProvider.GetArchivedLogFileName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log += _diskProvider.ReadAllText(_environmentProvider.GetLogFileName());
|
|
|
|
|
|
|
|
|
|
return new FileContentResult(Encoding.ASCII.GetBytes(log), "text/plain");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public JsonResult Clear()
|
|
|
|
|
{
|
|
|
|
|
_logProvider.DeleteAll();
|
|
|
|
|
|
|
|
|
|
return JsonNotificationResult.Info("Logs Cleared");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult AjaxBinding(DataTablesPageRequest pageRequest)
|
|
|
|
|
{
|
|
|
|
|
var pageResult = _logProvider.GetPagedItems(pageRequest);
|
|
|
|
|
var totalItems = _logProvider.Count();
|
|
|
|
|
|
|
|
|
|
var items = pageResult.Items.Select(l => new LogModel
|
|
|
|
|
{
|
|
|
|
|
Time = l.Time.ToString(),
|
|
|
|
|
Level = l.Level,
|
|
|
|
|
Source = l.Logger,
|
|
|
|
|
Message = l.Message,
|
|
|
|
|
Method = l.Method,
|
|
|
|
|
ExceptionType = l.ExceptionType,
|
|
|
|
|
Exception = l.Exception
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return Json(new
|
|
|
|
|
{
|
|
|
|
|
sEcho = pageRequest.Echo,
|
|
|
|
|
iTotalRecords = totalItems,
|
|
|
|
|
iTotalDisplayRecords = pageResult.TotalItems,
|
|
|
|
|
aaData = items
|
|
|
|
|
},
|
|
|
|
|
JsonRequestBehavior.AllowGet);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|