Я пытаюсь реализовать простой вход в приложение. Я использую Serilog, но из-за обстоятельств, не зависящих от меня, я не могу использовать Seq в качестве приемника. На данный момент мне сказали просто записывать журналы в локальный файл.
Я могу успешно регистрировать основную информацию, но у меня возникают проблемы с занесением информации о пользователе в журналы. Пакет Serilog.Enrichers.Environments
отлично получает информацию, но методы только дополняют журналы, которые не видны в журнале с обычным текстом. Когда я использую Seq в качестве приемника (который я не могу использовать для моей окончательной реализации), я могу видеть, что обогащения регистрируются нормально.
В настоящее время я пытаюсь получить информацию о пользователе из HttpContext
, но он возвращает null
. Вот пример кода, который я пробовал:
public static class HTMLHelperExtensions
{
public static string CurrentUser
{
get
{
HttpContext httpContext = HttpContext.Current;
if (httpContext == null || httpContext.User == null)
return null;
return httpContext.User.Identity.Name;
}
}
}
Вот конфигурация журнала в моем Global.asax
:
Log.Logger = new LoggerConfiguration()
.Enrich.WithEnvironmentUserName()
.WriteTo.File(
"fileLocation.txt",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information,
rollingInterval: RollingInterval.Infinite,
fileSizeLimitBytes: 10485760, //10MiB
retainedFileCountLimit: 50 )
.WriteTo.Seq("http://localhost:5341")
.CreateLogger();
И откуда я вызываю код:
public class HomeController : Controller
{
public ActionResult Index()
{
Log.Information("Application initial load. Included in Audit Log: {auditLog}. User: {User}", true, HTMLHelperExtensions.CurrentUser);
//other code
return View();
}
}
Метод .Enrich.WithEnvironmentUserName()
работает отлично, но я не знаю, как поместить эту информацию в фактическое тело журнала вместо дополнения.