Я использую NLog для входа в одно из своих приложений и хотел предоставить журналы пользователю через пользовательский интерфейс.Для этой цели я создал анализатор журналов, который берет файл журнала и анализирует все журналы в объектах C #, которые затем отправляются в пользовательский интерфейс, чтобы пользователь мог их просматривать.
Однако мне труднополучить правильную разбор даты.Журналы NLog с log4jxmlevent выглядят следующим образом:
<log4j:event
logger="Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker"
level="INFO"
timestamp="1539939614029"
thread="6">
<log4j:message>Executing action method Condato.IoT.Client.TinkerForge.Controllers.ApplicationController.GetLogs (Condato.IoT.Client.TinkerForge) - Validation state: Valid</log4j:message>
<log4j:properties>
<log4j:data name="log4japp" value="Condato.IoT.Client.TinkerForge(15096)" />
<log4j:data name="log4jmachinename" value="DEVDOTNET" />
</log4j:properties>
</log4j:event>
Затем я создал простой класс для хранения журнала:
public class Log
{
public string Logger { get; set; }
public string Level { get; set; }
public DateTime Time { get; set; }
public string Message { get; set; }
public string LogSource { get; set; }
public string LogSourceName { get; set; }
}
После этого я просто перебираю свои журналы и анализирую каждыйодин из объектов XML в C #.Соответствующая часть здесь разбирает свойство timestamp каждого журнала.
var time = new DateTime(long.Parse(rootReader["timestamp"])).ToUniversalTime();
Я предположил, что число в свойстве timestamp
представляет галочки.Поэтому я просто передал их в конструктор Date()
.Тем не менее, это вывод, полученный при разборе свойства timestamp
:
Так что, похоже, эти журналы были созданы вчера.Я посмотрел документацию NLog, но log4jxmlevent
очень редко документирован, или я что-то пропустил.