Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正确解析log4jxmlevent呈现程序的时间戳属性_C#_Date_Serialization_Nlog - Fatal编程技术网

C# 正确解析log4jxmlevent呈现程序的时间戳属性

C# 正确解析log4jxmlevent呈现程序的时间戳属性,c#,date,serialization,nlog,C#,Date,Serialization,Nlog,我使用NLog登录我的一个应用程序,并希望通过UI向用户提供日志。为此,我构建了一个日志解析器,它接受日志文件并将所有日志解析为C#对象,然后将这些对象发送到UI,以便用户可以查看它们 然而,我很难确定正确的日期。带有log4jxmleevent的NLog日志如下所示: <log4j:event logger="Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker" level="INFO" tim

我使用NLog登录我的一个应用程序,并希望通过UI向用户提供日志。为此,我构建了一个日志解析器,它接受日志文件并将所有日志解析为C#对象,然后将这些对象发送到UI,以便用户可以查看它们

然而,我很难确定正确的日期。带有log4jxmleevent的NLog日志如下所示:

<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>
之后,我只需迭代我的日志,并将每个日志从XML解析为C#对象。这里的相关部分是解析每个日志的timestamp属性

var time = new DateTime(long.Parse(rootReader["timestamp"])).ToUniversalTime();
我假设
timestamp
属性中的数字表示刻度。所以我只是将它们传递到
Date()
构造函数中。但是,这是我通过解析
timestamp
属性得到的输出:


所以这似乎是不对的,因为这些日志是昨天创建的。我已经看过NLog文档,但是
log4jxmleevent
文档很少,或者我遗漏了一些东西

原来timestamp属性是Unix时间戳。所以我需要像这样解析它:

var timestamp = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(rootReader["timestamp"].ToString())).DateTime;

然后它给了我正确的值。

另请参见“是”,谢谢您添加该值。:)
var timestamp = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(rootReader["timestamp"].ToString())).DateTime;