The socket appender already has the ability to reconnect. It just needs to ability to load balance or send to an alternate host if the connection fails.
Ralph > On Nov 6, 2018, at 11:15 AM, Gary Gregory <[email protected]> wrote: > > Speaking of failover kind of things, the JMS Appender has a reconnect > feature and I am wrapping up a similar feature for the JDBC Appender. This > kind of feature is a MUST for services that need to stay up and running for > longer periods of time. > > It would be nice to have a reconnect feature abstracted out so that all > appenders/managers that depend on external resources can survive these > resources going up and down as well as internet connections going up and > down. That would make it much easier to implement this in all appenders > that need it. A start would be to abstract JMS and JDBC reconnect code. > Testing this is quite tricky of course. > > Gary > > On Mon, Nov 5, 2018 at 9:33 PM Ralph Goers <[email protected]> > wrote: > >> Some other features I need/want to do: >> >> 1. LOG4J2-1137 >> 2. Allow the SocketAppender to specify multiple IP addresses and allow >> either round-robining through them or failing to the next if the first >> fails. This will provide better high availability for applications. >> 3. Support a ContextSelector based on Module Layers. >> 4. LOG4J2-2170 >> >> Ralph >> >>> On Nov 5, 2018, at 9:22 PM, Ralph Goers <[email protected]> >> wrote: >>> >>> How much are we impacting the API? I don’t know that package naming is >> required if the API is compatible. I am hoping this doesn’t impact the API >> much. >>> >>> I’d prefer this just be log4j 3.x. Log4j 2 3.x is just really weird. >>> >>> I wouldn’t say a module shouldn’t have any optional dependencies but it >> should be as few as possible. That said, because java is now modularized >> and you only get java.base by default I think log4j-core should only >> require that. This would mean probably only the Properties configuration >> can remain in core. >>> >>> I’m not completely sold on replacing the configuration with Jackson or >> Commons Configuration. First, I really like that we convert the >> configuration to a node tree and then process the node tree the same way >> regardless of the configuration syntax used to construct it. Since we >> already use Jackson for JSON and YAML I am not sure what it means to redo >> the configuration to use something we are already using. >>> >>> I would like to have every Maven module be a JPMS module, but this may >> still be impossible to do as not all of our dependencies have declared >> module names yet. For example, >> https://github.com/LMAX-Exchange/disruptor/issues/234 < >> https://github.com/LMAX-Exchange/disruptor/issues/234> shows the >> disruptor still hasn’t done anything. >>> >>> For me, the main goal would be just “cleaning up” so the modules have >> fewer dependencies. This also should align nicely with generating JPMS >> modules. >>> >>> I do have new features I want to add and they don’t really require 3.0 >> to do them, but I would really like to provide good reasons to upgrade to >> log4j 3.x besides internal cleanup. >>> >>> One new feature that is a high priority for me is to make Log4j more >> “cloud friendly”. This means being able to read and dynamically update the >> logging configuration from something like Spring Cloud Configuration. >> Essentially this just means being able to read and monitor a file via HTTP >> instead of using only the File API. >>> >>> Also, I’d like to make another pass at performance testing to see where >> we still have room for improvement. >>> >>> I would really, like to figure out a way to include location information >> in the log events without the overhead we have now. The only sane way to do >> it is to somehow get the information at compile time, but I just haven’t >> been able to figure out a clever hack to make it work. >>> >>> Ralph >>> >>>> On Nov 5, 2018, at 2:01 PM, Gary Gregory <[email protected]> >> wrote: >>>> >>>> Considerations for 3.0: >>>> >>>> - Currently targeting Java 8, seems OK to keep this for now. >>>> - Remove deprecated code >>>> - Make BC-breaking changes as we see fit to improve impl. >>>> - ? Update root package to include "3" to allow Log4j 1, 2, and 3 to >>>> co-exist peacefully on the claspath. Perhaps org.apache.logging.log4j3. >>>> - Do we need a compatibility layer for 1.2 to 3.0 and 2.x to 3.0? >>>> - Where can we use java.time? >>>> - Is it a goal to have Maven modules with NO optional dependencies? I >> think >>>> so. >>>> - Play nice in the Java 9 module system >>>> - Continue to break up current Maven modules >>>> - How can we make Core smaller? >>>> - Should we redo our config code to use something like Jackson or >> Commons >>>> Configuration? We have a lot of config code... Not sure if everything >> you >>>> can do in XML is doable in JSON and YAML. YAML is gross IMO but some >> people >>>> like it. >>>> >>>> What else? >>>> >>>> Gary >>> >> >> >>
