geson seems to do a good job, like Jackson (same JSR). I'd like to move forward with JSON format for storing properties.
I am not sure what the status currently is, if Scott is still working on it :) I could also make some kind of proposal or so for storing properties On Tue, Oct 3, 2023, at 01:20, Scott Deboy wrote: > I think persisting to json format makes sense/would be easy to consume > with tools if needed. > > On 10/2/23, Robert Middleton <rmiddle...@apache.org> wrote: >>> OK. Do you think something based on Jackson would be good? It's JSON >>> though. >> >> We already have a dependency on genson for JSON parsing, so if we >> really want to use JSON that would make the most sense. Commons >> config can read/write XML; currently I just have it configured to do >> properties files. I think we can write our own reader/writer as well, >> but ultimately I don't think that there is anything special that we >> need that commons config doesn't provide us out of the box. >> >> -Robert Middleton >> >> On Mon, Oct 2, 2023 at 5:14 PM Matt Sicker <m...@musigma.org> wrote: >>> >>> Jackson makes for a good library here because it also supports several >>> data formats (YAML, XML, HOCON, and all sorts of others, both textual and >>> binary) and is fairly extensible for hooking any custom serialization or >>> deserialization logic you need. Given the desire to avoid Java >>> serialization, it is perfectly reasonable to avoid XStream as that’s >>> basically Java serialization using XML with all the pitfalls that entails >>> (I dealt with this fairly extensively back in the Jenkins project which >>> used an old fork of XStream for managing config files and state). >>> >>> I haven’t used Commons Configuration before, but it seems fairly >>> appropriate for this sort of thing as well. >>> >>> > On Oct 2, 2023, at 1:43 PM, Christian Grobmeier <grobme...@apache.org> >>> > wrote: >>> > >>> > On Mon, Oct 2, 2023, at 16:15, Robert Middleton wrote: >>> >> At least two reasons I can think of: >>> >> 1. Xstream doesn’t work on all java versions as you saw >>> >> 2. Simplify by using the commons config instead of rolling our own. >>> >> >>> >> Each tab should now have just one config file, the idea being that you >>> >> can >>> >> now share config files between people. Before each tab had at least >>> >> two(maybe three) files. One was the xml config, one was a java >>> >> serialized >>> >> map. Removing the java serialization is important. >>> > >>> > OK. Do you think something based on Jackson would be good? It's JSON >>> > though. >>> > >>> > From an example: >>> > >>> > ObjectMapper objectMapper = new ObjectMapper(); >>> > Car car = new Car("yellow", "renault"); >>> > objectMapper.writeValue(new File("target/car.json"), car); >>> > >>> > We could wrap this in some kind of class and make it accessible per >>> > "tab" (or whatever). >>> > >>> > >>> >> >>> >> -Robert Middleton >>> >> >>> >> On Mon, Oct 2, 2023 at 6:12 AM Christian Grobmeier >>> >> <grobme...@apache.org> >>> >> wrote: >>> >> >>> >>> >>> >>> On Mon, Oct 2, 2023, at 02:55, Robert Middleton wrote: >>> >>>> Some(most?) of the settings should be saved: >>> >>>> >>> >>> https://github.com/apache/logging-chainsaw/blob/5ccb3c8e55dffd4361c549c3bcdac3f3675f79e5/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java#L191 >>> >>>> >>> >>>> The stuff that is commented out should just be the old saving code >>> >>>> that >>> >>>> used XStream to save the data out. >>> >>> >>> >>> You made it using this commit (thank you, its easy to track): >>> >>> >>> >>> https://github.com/apache/logging-chainsaw/commit/75bedf98665188eef4d13e4bfbb4b0dae456f65e >>> >>> >>> >>> One question: why did we remove Xstream? it seem there was an update >>> >>> late >>> >>> 2022 to address some security. >>> >>> Should we just re-enable it or was there other reasons too? >>> >>> >>> >>> >>> >>> >>> >>> >>> >>>> >>> >>>> -Robert Middleton >>> >>>> >>> >>>> On Sun, Oct 1, 2023 at 3:39 PM Christian Grobmeier >>> >>>> <grobme...@apache.org >>> >>>> >>> >>>> wrote: >>> >>>> >>> >>>>> >>> >>>>> On Sun, Oct 1, 2023, at 21:28, Scott Deboy wrote: >>> >>>>>> The ability to route events to tabs is a core feature in the code >>> >>>>>> - >>> >>>>>> that's how Chainsaw log messages end up in a Chainsaw-specific tab >>> >>>>>> - >>> >>>>>> but the ability to control that routing via a 'routing expression' >>> >>>>>> was >>> >>>>>> nuked from app-wide preferences - another thing we should bring >>> >>>>>> back. >>> >>>>>> >>> >>>>>> It looks like we lost a lot of prefs, both panel-level and >>> >>>>>> app-wide >>> >>>>> prefs. >>> >>>>> >>> >>>>> Yes, I think all prefs are somehow gone. At least everything that >>> >>>>> is >>> >>>>> writes to a file seems to be commented. >>> >>>>> I didn't remove those things yet, as they seemed to big and I >>> >>>>> didn't >>> >>>>> understand well how they'd work or how I would test (I lack the >>> >>> knowledge >>> >>>>> of how the UI should operate but only see what is there now) >>> >>>>> >>> >>>>> >>> >>>>>> >>> >>>>>> Scott >>> >>>>>> >>> >>>>>> On 10/1/23, Robert Middleton <rmiddle...@apache.org> wrote: >>> >>>>>>> I would say the saving/loading of settings is probably the main >>> >>> thing to >>> >>>>>>> fix - if I remember correctly, it kinda works at the moment. Part >>> >>>>>>> of >>> >>>>> the >>> >>>>>>> issue with what it did before was that the settings were >>> >>>>>>> scattered >>> >>> among >>> >>>>>>> several different files with no apparent rhyme or reason, and >>> >>> converting >>> >>>>>>> them to one file I'm not sure if everything works. >>> >>>>>>> >>> >>>>>>> The one feature that I'm pretty sure doesn't exist is the ability >>> >>>>>>> to >>> >>>>> have >>> >>>>>>> multiple log messages go to one tab, but I don't think that is >>> >>> critical >>> >>>>> for >>> >>>>>>> release. In order to properly support that I think requires a >>> >>>>>>> bit >>> >>> more >>> >>>>>>> planning on both the UI side(so you can know how things are >>> >>>>>>> routed) >>> >>> and >>> >>>>> on >>> >>>>>>> the back-end side(to do the actual routing). >>> >>>>>>> >>> >>>>>>> -Robert Middleton >>> >>>>>>> >>> >>>>>>> On Sun, Oct 1, 2023 at 3:14 PM Christian Grobmeier < >>> >>>>> grobme...@apache.org> >>> >>>>>>> wrote: >>> >>>>>>> >>> >>>>>>>> On Sun, Oct 1, 2023, at 20:59, Scott Deboy wrote: >>> >>>>>>>>> It's great to see the contribution, thanks Christian! >>> >>>>>>>>> >>> >>>>>>>>> I pulled down latest master and it looks like there are some UI >>> >>>>>>>>> glitches we should fix - for example, resizing the logger tree >>> >>> pane >>> >>>>>>>>> doesn't render correctly. >>> >>>>>>>>> >>> >>>>>>>>> As I mentioned before, I assume there are a bunch of features >>> >>>>>>>>> we >>> >>> lost >>> >>>>>>>>> when we moved from log4j1 - some may not be critical, but I >>> >>>>>>>>> think >>> >>>>>>>>> persisting 'default' tab settings is pretty important if it's >>> >>>>>>>>> not >>> >>>>>>>>> >>> >>>>>>>>> I'd like us to at least support the log4j2 zeroconf >>> >>>>>>>>> functionality >>> >>> as >>> >>>>>>>>> well as VFSLogFilePatternReceiver. >>> >>>>>>>>> >>> >>>>>>>>> I'm happy to dig in - will look at latest master and >>> >>>>>>>>> contribute. >>> >>>>>>>> >>> >>>>>>>> I would be more than glad if you could take some kind of a lead >>> >>> here. >>> >>>>> My >>> >>>>>>>> Swing-foo is long time gone and so far I just tried to clean a >>> >>>>>>>> few >>> >>>>> things >>> >>>>>>>> or make the code more comprehensible. >>> >>>>>>>> >>> >>>>>>>> I will keep trying to extracting things, making classes a bit >>> >>> smaller >>> >>>>> if >>> >>>>>>>> possible. I will closely follow what you are doing and try to >>> >>>>>>>> learn >>> >>>>> from >>> >>>>>>>> it. >>> >>>>>>>> >>> >>>>>>>> Maybe, once we can persist tab settings and then release it, no >>> >>> matter >>> >>>>>>>> how >>> >>>>>>>> the rest of the cleanup is. >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>>> >>> >>>>>>>>> Scott >>> >>>>>>>>> >>> >>>>>>>>> On 10/1/23, Christian Grobmeier <grobme...@apache.org> wrote: >>> >>>>>>>>>> Hello, >>> >>>>>>>>>> >>> >>>>>>>>>> I am moving things around a lot. There is much refactoring >>> >>>>>>>>>> that >>> >>> is >>> >>>>>>>> necessary >>> >>>>>>>>>> alone LogPanel had ~4500 lines of code. I believe this lot of >>> >>> LOCs >>> >>>>> is >>> >>>>>>>>>> so >>> >>>>>>>>>> complicated to understand that it prevents people from >>> >>> contributing >>> >>>>> - >>> >>>>>>>> let >>> >>>>>>>>>> alone Swing, but we can't change that. >>> >>>>>>>>>> >>> >>>>>>>>>> Apart from usual refactorings, I wonder what should be the >>> >>>>>>>>>> goal >>> >>> of >>> >>>>>>>>>> 2.2? >>> >>>>>>>>>> >>> >>>>>>>>>> I have already upgraded some dependencies that have security >>> >>> flaws. >>> >>>>> 2 >>> >>>>>>>> more >>> >>>>>>>>>> are in the pom, but they have no patched versions so far. >>> >>>>>>>>>> >>> >>>>>>>>>> Should we add at least one feature? Is there maybe one already >>> >>>>>>>>>> in >>> >>>>> that >>> >>>>>>>>>> I >>> >>>>>>>>>> missed? >>> >>>>>>>>>> >>> >>>>>>>>>> I would appreciate it if one of the more experienced >>> >>>>>>>>>> Swing-devs >>> >>> here >>> >>>>>>>> could >>> >>>>>>>>>> advise or maybe contribute some code so we can justify a >>> >>>>>>>>>> release. >>> >>>>>>>>>> >>> >>>>>>>>>> The next question would be: >>> >>>>>>>>>> How is chainsaw released at all? >>> >>>>>>>>>> >>> >>>>>>>>>> Kind regards, >>> >>>>>>>>>> Christian >>> >>>>>>>>>> >>> >>>>>>>> >>> >>>>>>> >>> >>>>> >>> >>> >>> >>