Save Emitter tree state between refreshes

If you think LogMX needs a new useful feature!
Post Reply
isheedm
Posts: 109
Joined: Wed Sep 12, 2007 2:16 pm

Save Emitter tree state between refreshes

Post by isheedm » Fri Jun 08, 2012 7:01 pm

This request is closely related to viewtopic.php?f=8&t=41

I would like the Emitter tree to remember it's state even if you do a "refresh" of the file. It needs to retain the contents, and what Emitters are turned off, etc.

What I typically do is to run through a test case, and once all the data is loaded, I hide various Emitters to focus my log messages to the bug or feature I'm working on. I will then modify the code, and re-run my test case. I like to click "Refresh" several times, or turn on auto-refresh to watch the progress of the test case. When the log starts over, it doesn't have much data in the file, so LogMX clears out the Emitter tree and refills it as the test case runs. Because of this, the state of which ones are turned off is lost.

I tried turning off the option to fold empty packages, thinking LogMX would retain the Emitters on refresh, but it didn't work like I wanted.

Once you get this infrastructure in place, saving the state to a file should be easy. Even if you don't save the state to a file yet, I'd like to have this feature by itself. It can be a user setting if you prefer.

admin
Site Admin
Posts: 418
Joined: Sun Dec 17, 2006 10:30 pm

Re: Save Emitter tree state between refreshes

Post by admin » Mon Jun 18, 2012 8:02 pm

Hello,

Sorry for the late answer.
Would it be possible in your case to use filters? You could then re-use the last applied filters using the yellow star on the Filter panel (e.g. LEVEL > INFO, emitter NOT CONTAIN "abc", ...) . I know that filtering by emitter using the emitter tree is faster than using the "Filter" feature, but if you use this filter very often, you may save some precious time.

Else, would you like to have two new buttons near the emitter tree to save/load a unique emitter tree state?

Xavier

isheedm
Posts: 109
Joined: Wed Sep 12, 2007 2:16 pm

Re: Save Emitter tree state between refreshes

Post by isheedm » Mon Jun 18, 2012 9:24 pm

It would be possible to use filters, but I like to use the tree as my first level of filtering, then apply filters if needed. If you had a button to easily setup filters based on which nodes are turned off in the emitter tree, that would help.

Two new buttons would be OK, or add the options to the right-click menu. I don't want to manually reload the state each time I refresh though, I would want an option to have it happen automatically. (another checkbox on on Tools->Options is what I was thinking of)

admin
Site Admin
Posts: 418
Joined: Sun Dec 17, 2006 10:30 pm

Re: Save Emitter tree state between refreshes

Post by admin » Tue Jun 19, 2012 8:35 pm

I'm afraid this emitter tree state will have to be manually restored (using a new button), and not automatically restored after reload in your case. Because your case is very specific:
  • an emitter is present in a version "v1" of the file,
  • then it disappears in a new loaded version "v2",
  • then it re-appears in a new loaded version "v3".
After each reload, LogMX already restores emitter tree automatically, but using the previous state only: if you hide emitter E1 in version v1, it will be automatically hidden in version v2 after reload (but in your case I understand that E1 is not present anymore in v2, so restore in v3 is based on state of v2).

isheedm
Posts: 109
Joined: Wed Sep 12, 2007 2:16 pm

Re: Save Emitter tree state between refreshes

Post by isheedm » Tue Jun 19, 2012 9:32 pm

I obviously don't know the internals of your code, but it doesn't seem too difficult to treat the emitter tree as something that is "append only".

  • load v1 of the file, build tree of emitters (E1 is present)
  • turn off E1
  • load v2 of the file, E1 is not present -- however, don't delete and rebuild the tree, just add any new emitters not already present (state=on). E1 will have no events assigned to it.
  • load v3 of the file, E1 is present again, but state hasn't changed from v1 since the tree hasn't been rebuilt

Over time you are building up an emitter tree that has a superset of all emitters ever seen for that session.

At the end of the day, I could save that state to a file and reload it in the morning.

Does that help?

admin
Site Admin
Posts: 418
Joined: Sun Dec 17, 2006 10:30 pm

Re: Save Emitter tree state between refreshes

Post by admin » Thu Jun 21, 2012 7:39 pm

You're right, it's not difficult to code it, it's more a 'functional' issue that could "surprise" some users in my own opinion.
I thought about a log file containing a great number of emitters: the user hides an emitter, then reload the file that have been flushed, then reload it once log entries are back: if he doesn't see some entries, I'm not sure he will remind that he previously hide its emitter (may be a long time ago), or even if he reminds it, would he think that this filter would still be applied. And since his file contains a great number of emitters, the tree is too big to fit in one page, he could not see the hidden emitter...

When you know that this feature is present, and how it works, it's surely a nice feature, but I'm afraid some users get lost :oops:

Yet, a feature to save/load an emitter state is surely a nice feature to add, we will surely include it in a future release.

Thank you for your time and your ideas!
Xavier.

isheedm
Posts: 109
Joined: Wed Sep 12, 2007 2:16 pm

Re: Save Emitter tree state between refreshes

Post by isheedm » Mon Jun 25, 2012 1:46 pm

It is hard for me to know what the most common use case is, but I see the value in auto-trimming the Emitter list as a default setting.

Would you be willing to add a configuration option to not trim the Emitter list on reload? The default setting could retain the current behavior. You have room to put a new icon on the top of the Emitter tree where the "Sort packages by name" and "Show all packages / classes" toggle buttons are. The new icon could be used to turn off auto-trimming of Emitters. Another option is to put it under Tools->Options.

This has been such a common use-case for me lately, I was hoping to streamline it as much as possible.

I'm happy that you plan to add the save/load emitter state options. Thank you for being so responsive (and patient!) to suggestions.

admin
Site Admin
Posts: 418
Joined: Sun Dec 17, 2006 10:30 pm

Re: Save Emitter tree state between refreshes

Post by admin » Tue Oct 08, 2013 9:26 pm

Hello,

Better late than never, LogMX v4.1.0 is now released and includes the new "Filtering state" features: it allows you to easily and quickly save/load all filtering elements with one click (shown/hidden levels, shown/hidden emitters, and used filters)

isheedm
Posts: 109
Joined: Wed Sep 12, 2007 2:16 pm

Re: Save Emitter tree state between refreshes

Post by isheedm » Wed Oct 09, 2013 1:32 pm

Great! Looking forward to it.

Post Reply