{"id":681,"date":"2011-01-14T19:23:34","date_gmt":"2011-01-15T03:23:34","guid":{"rendered":"http:\/\/www.visophyte.org\/blog\/?p=681"},"modified":"2011-01-14T19:23:34","modified_gmt":"2011-01-15T03:23:34","slug":"logsploder-circa-a-year-ago","status":"publish","type":"post","link":"https:\/\/www.visophyte.org\/blog\/2011\/01\/14\/logsploder-circa-a-year-ago\/","title":{"rendered":"logsploder, circa a year+ ago"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-682\" title=\"logsploder-big-logger-treemap\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-big-logger-treemap.png\" alt=\"\" width=\"366\" height=\"366\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-big-logger-treemap.png 366w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-big-logger-treemap-300x300.png 300w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/p>\n<p>Whoops. \u00a0I <a href=\"http:\/\/groups.google.com\/group\/mozilla.dev.apps.thunderbird\/msg\/be2c39e523210c02\">posted to mozilla.dev.apps.thunderbird<\/a> about an updated version of <a href=\"http:\/\/www.visophyte.org\/blog\/tag\/logsploder\/\">logsploder<\/a> at the end of 2009, but forgot to blog about it. \u00a0I do so now (briefly) for my own retrospective interest and those who like cropped screenshots.<\/p>\n<p>The gloda (global database) tests and various Thunderbird mozmill tests have been augmented for some time (1+ years) to support rich logging where handlers are given the chance to extract the salient attributes of objects and convert them to JSON for marshaling. \u00a0Additionally, when the fancy logging mode is enabled, additional loggers are registered (like Thunderbird&#8217;s nsIMsgFolderListener) to provide additional context for what is going on around testing operations.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-683\" title=\"logsploder-timemap-multiples\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-timemap-multiples.png\" alt=\"\" width=\"619\" height=\"89\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-timemap-multiples.png 619w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-timemap-multiples-600x86.png 600w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-timemap-multiples-300x43.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/p>\n<p>For a given test (file) run, logsploder provides an overview in the form of a hierarchical treemap that identifies the logger categories used in the test and a small multiples timeline display that characterizes the volume of messages logged to each category in a given time slice using the treemap&#8217;s layout. \u00a0The idea is that you can see at a glance the subsystems active for each time-slice.<\/p>\n<p>Logsploder can retain multiple test file runs in memory:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-684\" title=\"logsploder-test-results\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-test-results.png\" alt=\"\" width=\"382\" height=\"272\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-test-results.png 382w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-test-results-300x213.png 300w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/p>\n<p>And knows the tests and sub-tests run in each test file (xpcshell) run. \u00a0Tests\/sub-tests are not green\/red coded because xpcshell tests give up as soon as the first failure is encountered so there is no real point:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-685\" title=\"logsploder-tests-subtests\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-tests-subtests.png\" alt=\"\" width=\"491\" height=\"238\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-tests-subtests.png 491w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-tests-subtests-300x145.png 300w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><\/p>\n<p>Clicking on a test\/subtest automatically selects the first time slice during which it was active.<\/p>\n<p>Selecting a time-slice presents us with a simple list of the events that occurred during that time slice. \u00a0Each event is colored (although I think darkened?) based on its logging category:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-686\" title=\"logsploder-log-contents-keychange-slice\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-log-contents-keychange-slice.png\" alt=\"\" width=\"676\" height=\"402\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-log-contents-keychange-slice.png 676w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-log-contents-keychange-slice-600x356.png 600w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-log-contents-keychange-slice-300x178.png 300w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/p>\n<p>Underlined things are rich object representations that can be clicked on to show additional details. \u00a0For example, if we click on the very first underlined thing, &#8220;MsgHdr: imap:\/\/user@localhost\/gabba13#1&#8221; entry, we get:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-687\" title=\"logsploder-detail-view-msghdr\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-detail-view-msghdr.png\" alt=\"\" width=\"532\" height=\"440\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-detail-view-msghdr.png 532w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-detail-view-msghdr-300x248.png 300w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/p>\n<p>And if we click on the interestingProperties OBJECT:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-688\" title=\"logsploder-detail-view-msghdr-interesting-props\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2011\/01\/logsploder-detail-view-msghdr-interesting-props.png\" alt=\"\" width=\"142\" height=\"197\" \/><\/p>\n<p>Logsploder was a pre-<a href=\"http:\/\/www.visophyte.org\/blog\/tag\/wmsy\/\">wmsy<\/a> (the widget framework that I&#8217;ll be talking about more starting a few weeks from now) tool whose UI implementation informed wmsy. \u00a0Which is to say, the need to switch to a different tab or click on the &#8220;OBJECT&#8221; rather than supporting some more clever form of popups and\/or inline nesting was a presentation limitation that would not happen today. \u00a0(More significantly, the log events would not be paged based on time slice with wmsy, although that limitation is not as obvious from the way I&#8217;ve presented the screenshots.)<\/p>\n<p>If anyone in the Thunderbird world is interested in giving logsploder a spin for themselves, the <a href=\"http:\/\/hg.mozilla.org\/users\/bugmail_asutherland.org\/logsploder\/\">hg repo is here<\/a>. \u00a0I also have various patches that I can cleanup\/make available in my patch queue to support logging xpcshell output to disk (rather than just the network), hooking up the logHelper mechanism so it reports data to mozmill over jsbridge, and (likely heavily bit-rotted) mozmill patches to report those JSON blobs to a CouchDB server (along with screenshots taken when failures occur). \u00a0The latter stuff never hit the repo because of the previously mentioned lack of a couchdb instance to actually push the results to. \u00a0Much of the logHelper\/CouchDB work will likely find new life as we move forward with a wmsy-fied Thunderbird Air experiment.<\/p>\n<p>Many thanks to <a href=\"http:\/\/monogatari.doukut.su\/\">sid0<\/a> who has continued to improve <a href=\"http:\/\/mxr.mozilla.org\/comm-central\/source\/mailnews\/test\/resources\/logHelper.js\">logHelper<\/a>, if sometimes only to stop it from throwing exceptions on newly logged things that its heuristics fatally did not understand \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whoops. \u00a0I posted to mozilla.dev.apps.thunderbird about an updated version of logsploder at the end of 2009, but forgot to blog about it. \u00a0I do so now (briefly) for my own retrospective interest and those who like cropped screenshots. The gloda &hellip; <a href=\"https:\/\/www.visophyte.org\/blog\/2011\/01\/14\/logsploder-circa-a-year-ago\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7,8],"tags":[22,52,55],"class_list":["post-681","post","type-post","status-publish","format-standard","hentry","category-debugging","category-program-execution","tag-log4moz","tag-logging","tag-logsploder"],"_links":{"self":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/comments?post=681"}],"version-history":[{"count":8,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/681\/revisions"}],"predecessor-version":[{"id":696,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/681\/revisions\/696"}],"wp:attachment":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/media?parent=681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/categories?post=681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/tags?post=681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}