I haven't used markers much, but I've finally figured out an interesting use case for them at work: marking log messages to filter them into a Slack message. Right now we've got people using random Slack libraries to post messages in team channels to alert various things, yet a simple appender plus marker filter would simplify this quite a bit. I'd imagine that some people use differently named loggers or other tricks because they don't know about markers in the first place.
On 23 February 2017 at 21:44, Apache <ralph.go...@dslextreme.com> wrote: > Yeah, but it makes me wonder if anyone is using Markers. That bug was > found over 5 years ago during performance testing of an app at my former > employer when they were still using Logback. It received no votes in Jira > and no one saying “me too”. If they were doing any kind of logging with the > MarkerFilter in the configuration they would have noticed the problem > during any performance testing. > > That said, I too am glad it is finally fixed. But between that and the > improvements to the FileAppender we need to update the performance page. > In my tests we are still coming out ahead but Logback is now much better > than it was. > > Ralph > > > On Feb 23, 2017, at 8:33 PM, Matt Sicker <boa...@gmail.com> wrote: > > > > That's good to hear! A lot of people still use SLF4J with Log4j 2, so > > anything that makes them more performant is a nice bonus. > > > > On 23 February 2017 at 21:29, Apache <ralph.go...@dslextreme.com> wrote: > > > >> I tested SLF4J after the fix and on my computer the performance problem > >> does seem to have been addressed and the code should now be thread safe. > >> > >> Ralph > >> > >>> On Feb 23, 2017, at 2:39 PM, Apache <ralph.go...@dslextreme.com> > wrote: > >>> > >>> And that issue has now been marked closed. However, there are still a > >> couple of synchronized methods in there that are called on every filter > >> comparison so we will have to rerun our performance benchmarks to see > if it > >> made a significant difference. > >>> > >>> Ralph > >>> > >>>> On Feb 23, 2017, at 2:30 PM, Apache <ralph.go...@dslextreme.com> > wrote: > >>>> > >>>> Ceki obviously reads this list as he marked SLF4J-240 in progress > right > >> after I posted the message below. Keep an eye on that for a fix. > >>>> > >>>> While your in there Ceki, the contains methods in BasicMarker aren’t > >> thread-safe. > >>>> > >>>> Ralph > >>>> > >>>>> On Feb 23, 2017, at 1:29 PM, Apache <ralph.go...@dslextreme.com> > >> wrote: > >>>>> > >>>>> Markers would work but I wouldn’t recommend using them with SLF4J. > See > >> https://jira.qos.ch/browse/SLF4J-240 <https://jira.qos.ch/browse/ > SLF4J-240>. > >> It has been open for over 5 years so I’m of the impression it will > never be > >> fixed. http://logging.apache.org/log4j/2.x/performance.html# > >> Advanced_Filtering <http://logging.apache.org/ > log4j/2.x/performance.html# > >> Advanced_Filtering> shows that filtering on Markers becomes a huge > >> bottleneck in a multithreaded system. > >>>>> > >>>>> Ralph > >>>>> > >>>>> > >>>>>> On Feb 23, 2017, at 1:01 PM, Marshall Schor <m...@schor.com> wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>> On 2/23/2017 1:09 PM, Apache wrote: > >>>>>>> You shouldn’t be trying to modify the logger. You should be trying > >> to modify the configuration. Take a look at http://logging.apache.org/ > >> log4j/2.x/manual/customconfig.html#Programmatically_ > Modifying_the_Current_ > >> Configuration_after_Initialization <http://logging.apache.org/ > >> log4j/2.x/manual/customconfig.html#Programmatically_ > Modifying_the_Current_ > >> Configuration_after_Initialization> <http://logging.apache.org/ > >> log4j/2.x/manual/customconfig.html#Programmatically_ > Modifying_the_Current_ > >> Configuration_after_Initialization <http://logging.apache.org/ > >> log4j/2.x/manual/customconfig.html#Programmatically_ > Modifying_the_Current_ > >> Configuration_after_Initialization>>. That example creates an appender > >> and a logger and adds them. In your case, you would want to find > >> loggerConfig associated with your logger by calling > config.getLoggerConfig(“loggerName”). > >> Then add the filter to that. > >>>>>>> > >>>>>>> That said, you should probably explain what you are actually trying > >> to do. More often than not, dynamically updating the logging > configuration > >> is unnecessary as what you really want to do can be achieved other ways. > >>>>>> > >>>>>> Thanks. > >>>>>> What I'm trying to do is to run JUnit testing of an old logging > >> facade that I've > >>>>>> bridged to log4j-2. > >>>>>> > >>>>>> In the test, I set a filter, and want to see that it worked. > >>>>>> > >>>>>> While I have your attention, I'm bridging from a format that used > the > >> JUL > >>>>>> "CONFIG" level, and would like to know how to represent this in a > >> "neutral" way > >>>>>> for modern loggers. (I'm thinking of SLF4J, Log4J, and LogBack). My > >> thought is > >>>>>> to map CONFIG requests to INFO requests with a "Marker" identifying > >> CONFIG. > >>>>>> Same goes for FINE/FINER - mapping to TRACE, with markers for the > two > >>>>>> alternatives. To make this work, I'm implementing special "Filters" > >> :-). > >>>>>> > >>>>>> Is there a better way? I know you can introduce additional levels > in > >> Log4j-2, > >>>>>> but that doesn't seem to be supported in SLF4J and LogBack, and I'm > >> looking for > >>>>>> a more universal approach. > >>>>>> > >>>>>> Thanks. -Marshall > >>>>>> > >>>>>>> > >>>>>>> Ralph > >>>>>>> > >>>>>>>> On Feb 23, 2017, at 9:39 AM, Marshall Schor <m...@schor.com> > wrote: > >>>>>>>> > >>>>>>>> Hi, > >>>>>>>> > >>>>>>>> I'm writing test cases, using version 2.8 of Log4j. > >>>>>>>> > >>>>>>>> One test sets a filter on a logger. > >>>>>>>> > >>>>>>>> Looking (afterwards) at the logger, I see that the logger has a > >> field: > >>>>>>>> > >>>>>>>> "privateConfig", and that has two fields for configuration info: > >>>>>>>> > >>>>>>>> - config (set to an instance of XmlConfiguration) > >>>>>>>> - loggerConfig (has the filter I set on the logger). > >>>>>>>> > >>>>>>>> The code for isEnabled in Logger (line 238): > >>>>>>>> public boolean isEnabled(final Level level, final Marker marker, > >> final Object > >>>>>>>> message, final Throwable t) { > >>>>>>>> return privateConfig.filter(level, marker, message, t); > >>>>>>>> } > >>>>>>>> > >>>>>>>> privateConfig.filter() although it has both a "config" and a > >> "loggerConfig", > >>>>>>>> only checks the config. > >>>>>>>> > >>>>>>>> The fact that I successfully used an API to set the loggerConfig > >> with a filter > >>>>>>>> is ignored. > >>>>>>>> > >>>>>>>> Should the design for privateConfig.filter() check both configs, > or > >> is there > >>>>>>>> some API call to "merge" the change I did that was recorded in the > >> field > >>>>>>>> "loggerConfig" into the config stored in the field "config"? > >>>>>>>> > >>>>>>>> -Marshall Schor > >>>>>>>> > >>>>>>>> P.S., here's the API call I did to set a filter: > >>>>>>>> > >>>>>>>> // coreLogger is a cast of a normal logger, to enable the get() > >> method > >>>>>>>> coreLogger.get().addFilter(myFilter); > >>>>>>>> > >>>>>>>> // not sure if this is needed, but did it anyways > >>>>>>>> coreLogger.getContext().updateLoggers(); > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> ------------------------------------------------------------ > >> --------- > >>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >>>>>>>> For additional commands, e-mail: log4j-user-help@logging. > apache.org > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> ------------------------------------------------------------ > --------- > >>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >> <mailto:log4j-user-unsubscr...@logging.apache.org> > >>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org > >> <mailto:log4j-user-h...@logging.apache.org> > >>>> > >>>> > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org > >>>> > >>>> > >>> > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >>> For additional commands, e-mail: log4j-user-h...@logging.apache.org > >>> > >>> > >> > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >> For additional commands, e-mail: log4j-user-h...@logging.apache.org > >> > >> > > > > > > -- > > Matt Sicker <boa...@gmail.com> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > -- Matt Sicker <boa...@gmail.com>