NLog может предоставить эту функцию.
См. NLog Tutorial для установки и настройки.
Есть ли лучший способ справиться с этим, регистрируя все вызовы метода, включая время и его параметры по требованию
Вам необходимо создать фильтр действий, он предоставит время, затраченное на запрос.
ActionFilter: (Возможно, вам придется изменить код по вашему требованию)
public class LogHttpRequestAttribute : ActionFilterAttribute
{
private static Logger _logger = LogManager.GetCurrentClassLogger();
public override void OnActionExecuting(HttpActionContext actionContext)
{
_logger.Info("action execution started");
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
_logger.Info("action execution finished");
}
The Global.asax:
protected void Application_Start()
{
//Some code.
// Register global filter
GlobalFilters.Filters.Add(new LogHttpRequestAttribute());
}
Вы должны добавить цель для этого фильтра в файле NLog.config.
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
</targets>
<rules>
<logger name="*.LogHttpRequestAttribute" writeTo="logfile" />
</rules>
Приведенный выше пример далек отзавершено, но я надеюсь, что оно направит вас в правильном направлении.
Существует множество полезных средств визуализации макетов, заданных здесь ищите Web, ASP.NET и ASP.NETОсновной раздел. Немного из полезных:
- $ {aspnet-mvc-action}
- $ {aspnet-mvc-controller}
- $ {aspnet-request-form}
- $ {aspnet-request-querystring}
- $ {aspnet-user-identity}
Включение ведения журнала и получение журналов для просмотра вместо отладкиприложения.
Чтобы отключить ведение журнала, установите enabled для атрибута rule в false или отключите в коде .
Это не только метод контроллера, все методы в вызове, которые мне нравится регистрировать.
Вы должны создать статическую переменную для этого в каждом классе, в который хотите войти.
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
Затем используйте этот элемент для регистрации данных.
_logger.Info("data");
Редактировать: Для входа любым способом.
using NLog;
public class DemoClass
{
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public void DemoMethod()
{
try
{
//some code
_logger.Info("Some information");
}
catch (Exception ex)
{
_logger.Error(ex, $"Something went wrong");
throw;
}
}
}