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
>>> 
>> 
>> 
>> 


Reply via email to