﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>LogViewPlus Support » LogViewPlus Support » Configuration &amp; Customization  » json log</title><generator>InstantForum 2017-1 Final</generator><description>LogViewPlus Support</description><link>https://www.logviewplus.com/forum/</link><webMaster>LogViewPlus Support</webMaster><lastBuildDate>Sat, 11 Apr 2026 06:06:04 GMT</lastBuildDate><ttl>20</ttl><item><title>json log</title><link>https://www.logviewplus.com/forum/post/266</link><description>Hello,&lt;br/&gt;I'm currently evaluating your product to determine if it will work for parsing our logs.&lt;br/&gt;We have json logs that certain key/value pairs always exist and some that are only there certain times. The order of the key/value pairs could be different as well.&lt;br/&gt;I'm noticing that sometimes the logs get parsed incorrectly and the values show up in the wrong column. Is this a issue in your product or the way I've setup my json parser?&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Parser setup&lt;/strong&gt;&lt;br/&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br/&gt;{&lt;br/&gt;"Timestamp": "%d{yyyy-MM-ddT%H:mm:ss.fffffffzzzz}",&lt;br/&gt;"Level": "%p",&lt;br/&gt;"RenderedMessage": "%m",&lt;br/&gt;"Properties": {&lt;br/&gt;  "EventId": { &lt;br/&gt;&amp;nbsp;"Id": "%S{Event Id}", &lt;br/&gt;&amp;nbsp;"Name": "%S{Event Name}" },&lt;br/&gt;  "ProcessId": "%s{Process Id}",&lt;br/&gt;  "ThreadId": "%t",&lt;br/&gt;  "SourceContext":"%S{Source Context}"&lt;br/&gt;}&lt;br/&gt;}&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Log that parses correctly&lt;/strong&gt;&lt;br/&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br/&gt;{&lt;br/&gt;  "Timestamp": "2019-07-19T09:48:52.2880729-07:00",&lt;br/&gt;  "Level": "Debug",&lt;br/&gt;  "MessageTemplate": "{task} processing completed in {duration}.",&lt;br/&gt;  "RenderedMessage": "\"AgentHeartbeatTask\" processing completed in 00:00:00.3968037.",&lt;br/&gt;  "Properties": {&lt;br/&gt;&amp;nbsp;"task": "AgentHeartbeatTask",&lt;br/&gt;&amp;nbsp;"duration": "00:00:00.3968037",&lt;br/&gt;&amp;nbsp;"EventId": {&lt;br/&gt;&amp;nbsp; "Id": 22,&lt;br/&gt;&amp;nbsp; "Name": "Background task ended"&lt;br/&gt;&amp;nbsp;},&lt;br/&gt;&amp;nbsp;"SourceContext": "Tableau.PowerTools.Server.Common, Version=2019.3.0.0, Culture=neutral, PublicKeyToken=null",&lt;br/&gt;&amp;nbsp;"Scope": [&lt;br/&gt;&amp;nbsp; "ImportunateTaskRunner starting task: RunAgentHeartbeatAsync"&lt;br/&gt;&amp;nbsp;],&lt;br/&gt;&amp;nbsp;"ProcessId": 476,&lt;br/&gt;&amp;nbsp;"ThreadId": 11,&lt;br/&gt;&amp;nbsp;"PTTaskDesc": "AgentHeartbeatTask",&lt;br/&gt;&amp;nbsp;"PTCorrelationId": "a01f0ca3-5581-4b4c-9a5d-3f32490ff7ae"&lt;br/&gt;  }&lt;br/&gt;}&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Logs that parse incorrectly. The string "SourceContext": "Tableau.PowerTools.Server.Common, Version=2019.3.0.0, Culture=neutral, PublicKeyToken=null" ends up in the “Event ID” column when it should be in the “SourceContext” column.&lt;/strong&gt;&lt;br/&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br/&gt;{&lt;br/&gt;  "Timestamp": "2019-07-19T09:48:52.2940717-07:00",&lt;br/&gt;  "Level": "Debug",&lt;br/&gt;  "MessageTemplate": "{task} scheduled to run again in {duration} ms.",&lt;br/&gt;  "RenderedMessage": "\"AgentHeartbeatTask\" scheduled to run again in 300000 ms.",&lt;br/&gt;  "Properties": {&lt;br/&gt;&amp;nbsp;"task": "AgentHeartbeatTask",&lt;br/&gt;&amp;nbsp;"duration": 300000,&lt;br/&gt;&amp;nbsp;"SourceContext": "Tableau.PowerTools.Server.Common, Version=2019.3.0.0, Culture=neutral, PublicKeyToken=null",&lt;br/&gt;&amp;nbsp;"Scope": [&lt;br/&gt;&amp;nbsp; "ImportunateTaskRunner starting task: RunAgentHeartbeatAsync"&lt;br/&gt;&amp;nbsp;],&lt;br/&gt;&amp;nbsp;"ProcessId": 476,&lt;br/&gt;&amp;nbsp;"ThreadId": 14&lt;br/&gt;  }&lt;br/&gt;}&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Thank you&lt;br/&gt;&lt;br/&gt;</description><pubDate>Mon, 29 Jul 2019 20:44:08 GMT</pubDate><dc:creator>drache42</dc:creator></item><item><title>RE: json log</title><link>https://www.logviewplus.com/forum/post/276</link><description>Hi,&lt;br/&gt;&lt;br/&gt;Thanks for reporting this issue.&amp;nbsp; This bug was introduced as part of the change to allow optional columns and we missed it during our testing.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;I have just released LogViewPlus v2.3.21 which resolves this issue.&lt;br/&gt;&lt;br/&gt;Thanks again,&lt;br/&gt;&lt;br/&gt;Toby</description><pubDate>Mon, 29 Jul 2019 20:44:08 GMT</pubDate><dc:creator>LogViewPlus Support</dc:creator></item><item><title>RE: json log</title><link>https://www.logviewplus.com/forum/post/275</link><description>I've installed the beta. However, now when I try to change the parser (without making any changes to the parsing json) I get the following error: "Parsing Failed: Object reference not set to an instance of an object".&lt;img src="../Uploads/Images/c17a0759-f248-4a4b-aabc-e8b1.png" data-download-url="../Uploads/Images/fbe3a6ce-b5c2-45b5-a5d5-1100.png" id="if_insertedNode_1564429184233"&gt;</description><pubDate>Mon, 29 Jul 2019 19:39:50 GMT</pubDate><dc:creator>drache42</dc:creator></item><item><title>RE: json log</title><link>https://www.logviewplus.com/forum/post/273</link><description>Hi Drache,&lt;br/&gt;&lt;br/&gt;We have now released LogViewPlus v2.3.19 into BETA which addresses the issue discussed above.&amp;nbsp; Using this version, I can apply your original parsing configuration:&lt;br/&gt;[code language="css"]{&lt;br/&gt;   "Timestamp": "%d{yyyy-MM-ddT%H:mm:ss.fffffffzzzz}",&lt;br/&gt;   "Level": "%p",&lt;br/&gt;   "RenderedMessage": "%m",&lt;br/&gt;   "Properties": {&lt;br/&gt;   "EventId": { &lt;br/&gt;       "Id": "%S{Event Id}", &lt;br/&gt;       "Name": "%S{Event Name}" },&lt;br/&gt;      "ProcessId": "%s{Process Id}",&lt;br/&gt;      "ThreadId": "%t",&lt;br/&gt;      "SourceContext":"%S{Source Context}"&lt;br/&gt;   }&lt;br/&gt;}[/code]&lt;br/&gt;&lt;br/&gt;LogViewPlus can now handle blank and out of order fields (see Event ID and Process ID columns).&lt;br/&gt;&lt;img src="../Uploads/Images/57ba1dc1-ac61-4ceb-b017-730b.png" data-download-url="../Uploads/Images/75e3e43d-79ac-494e-936b-f66a.png" id="if_insertedNode_1564341150131"&gt;&lt;br/&gt;&lt;br/&gt;The latest BETA release can be downloaded from:&lt;br/&gt;&lt;a href="https://www.logviewplus.com/download.html"&gt;https://www.logviewplus.com/download.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Thanks again for bringing this problem to our attention,&lt;br/&gt;&lt;br/&gt;Toby</description><pubDate>Sun, 28 Jul 2019 19:14:22 GMT</pubDate><dc:creator>LogViewPlus Support</dc:creator></item><item><title>RE: json log</title><link>https://www.logviewplus.com/forum/post/268</link><description>Thank you, that helps a lot</description><pubDate>Thu, 25 Jul 2019 20:10:59 GMT</pubDate><dc:creator>drache42</dc:creator></item><item><title>RE: json log</title><link>https://www.logviewplus.com/forum/post/267</link><description>Hi,&lt;br/&gt;&lt;br/&gt;Thanks for the detailed bug report.&amp;nbsp; I have been able to recreate the issue locally.&lt;br/&gt;&lt;br/&gt;LogViewPlus stores all log entries into a common object that treats string (%s) columns as a list.&amp;nbsp; Column assignment in this list is based on index position.&amp;nbsp; The problem here is that when a string column is missing, the next string column is then written into the wrong index position.&amp;nbsp; Having columns parsed out of order can also cause this problem.&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;This is the first time we have seen this issue.&amp;nbsp; I will make sure it gets fixed in the next release.&lt;br/&gt;&lt;br/&gt;In the meantime, I would recommend one of two options:&lt;br/&gt;1.&amp;nbsp; Do not parse fields that are optional or may be out of order.&lt;br/&gt;2.&amp;nbsp; Use one of the 'Advanced Specifiers' as a placeholder on the field you want to parse.&amp;nbsp; Note that only string columns suffer from the index position issue described above.&lt;br/&gt;&lt;br/&gt;For example, I can parse your logs successfully with the configuration:&lt;br/&gt;&lt;br/&gt;[code language="css"]{&lt;br/&gt;&amp;nbsp;"Timestamp": "%d{yyyy-MM-ddT%H:mm:ss.fffffffzzzz}",&lt;br/&gt;&amp;nbsp;"Level": "%p",&lt;br/&gt;&amp;nbsp;"RenderedMessage": "%m",&lt;br/&gt;&amp;nbsp;"Properties": {&lt;br/&gt;&amp;nbsp;&amp;nbsp;"EventId": {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Id": "%u",&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Name": "%M"&lt;br/&gt;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;&amp;nbsp;&amp;nbsp;"ProcessId": "%s{Process Id}",&lt;br/&gt;&amp;nbsp;&amp;nbsp;"ThreadId": "%t",&lt;br/&gt;&amp;nbsp;&amp;nbsp;"SourceContext": "%c"&lt;br/&gt;&amp;nbsp;}&lt;br/&gt;}[/code]&lt;br/&gt;&lt;br/&gt;As there is only one string in this configuration, ordering will not be an issue.&amp;nbsp; Note that the Identity (%i) and Method Name (%M) columns are not used very often and will need to be added to your grid view manually.&amp;nbsp; This setting is then saved with the parser configuration, so you will only need to do this once.&lt;br/&gt;&lt;br/&gt;A full list of advanced specifiers is available here:&lt;br/&gt;&lt;a href="https://www.logviewplus.com/docs/advanced_specifiers.html"&gt;&lt;a href="https://www.logviewplus.com/docs/advanced_specifiers.html"&gt;https://www.logviewplus.com/docs/advanced_specifiers.html&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Hope that helps.&amp;nbsp; Thanks again for reporting this issue.&lt;br/&gt;&lt;br/&gt;Toby</description><pubDate>Thu, 25 Jul 2019 19:27:26 GMT</pubDate><dc:creator>LogViewPlus Support</dc:creator></item></channel></rss>