I think that it is unfortunate that the close timeout is always zero within
the standard JVM shutdown hook (LoggerContext.java:275). I think that
should be configurable. However, I don't want to delay the release for
that, so let's fix that after the 2.7 release.
https://issues.apache.org/jira/browse/LOG4J2-1623

However, I want to make sure that KafkaManager use the previous behavior if
the requested timeout is zero. I just made a commit to master with that.

It seems like FlumePersistentManager.releaseSub (the only other Manager
using releaseSub timeout) tries to do something similar:

final long shutdownWaitMillis = requestedTimeoutMillis < 0 ?
SHUTDOWN_WAIT_MILLIS : requestedTimeoutMillis;

But I thing the logic is wrong here. It should probably use
SHUTDOWN_WAIT_MILLIS if requestedTimeoutMillis is <= 0. This should
possibly be fixed before the release.



On Wed, Sep 28, 2016 at 6:54 PM, Gary Gregory <garydgreg...@gmail.com>
wrote:

> On Wed, Sep 28, 2016 at 8:51 AM, Mikael Ståldal <mikael.stal...@magine.com
> > wrote:
>
>> Was this timeout thing implemented as part of any JIRA issue?
>>
>
> The high level ticket is: https://issues.apache.org/
> jira/browse/LOG4J2-1539
>
> Gary
>
>
>>
>> On Wed, Sep 28, 2016 at 5:49 PM, Mikael Ståldal <
>> mikael.stal...@magine.com> wrote:
>>
>>> To track this, I temporary added this to KafkaManager.releaseSub():
>>> LOGGER.info("releaseSub: timeout=" + timeout + " " +
>>> timeUnit.toString(), new Throwable());
>>>
>>> and I get:
>>>
>>> 2016-09-28 17:43:14,382 pool-1-thread-1 INFO releaseSub: timeout=0 
>>> MILLISECONDS java.lang.Throwable
>>>
>>>     at 
>>> org.apache.logging.log4j.core.appender.mom.kafka.KafkaManager.releaseSub(KafkaManager.java:60)
>>>     at 
>>> org.apache.logging.log4j.core.appender.AbstractManager.stop(AbstractManager.java:85)
>>>     at 
>>> org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender.stop(KafkaAppender.java:107)
>>>     at 
>>> org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:349)
>>>     at 
>>> org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:329)
>>>     at 
>>> org.apache.logging.log4j.core.AbstractLifeCycle.stop(AbstractLifeCycle.java:127)
>>>     at 
>>> org.apache.logging.log4j.core.LoggerContext$1.run(LoggerContext.java:275)
>>>     at 
>>> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry$RegisteredCancellable.run(DefaultShutdownCallbackRegistry.java:104)
>>>     at 
>>> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:74)
>>>     at java.lang.Thread.run(Thread.java:745)
>>>
>>> the culprit is AbstractLifeCycle.stop() which uses a default timeout of 0.
>>>
>>>
>>> On Wed, Sep 28, 2016 at 5:40 PM, Gary Gregory <garydgreg...@gmail.com>
>>> wrote:
>>>
>>>> It is used when you call LifeCycle2.stop(long, TimeUnit), like stopping
>>>> a LoggerContext or all of Log4j through the shutdown() method.
>>>>
>>>> Gary
>>>>
>>>> On Wed, Sep 28, 2016 at 8:35 AM, Mikael Ståldal <
>>>> mikael.stal...@magine.com> wrote:
>>>>
>>>>> I see that KafkaManager.releaseSub() is passed a timeout of 0 at
>>>>> runtime, which is not very useful. How is this actually supposed to be
>>>>> used? How can you make it get something else than 0?
>>>>>
>>>>> On Wed, Sep 28, 2016 at 5:33 PM, Mikael Ståldal <
>>>>> mikael.stal...@magine.com> wrote:
>>>>>
>>>>>> We have already discussed this here: https://issues.apache.or
>>>>>> g/jira/browse/LOG4J2-1390
>>>>>>
>>>>>> I don't think the release process is the right occasion to reopen
>>>>>> this discussion. Can we please keep the Kafka 0.8 compatibility for this
>>>>>> release, and then possibly reopen this discussion after the release (and
>>>>>> possibly changing it for the 2.8 release)?
>>>>>>
>>>>>> On Wed, Sep 28, 2016 at 5:24 PM, Gary Gregory <garydgreg...@gmail.com
>>>>>> > wrote:
>>>>>>
>>>>>>> On Wed, Sep 28, 2016 at 8:13 AM, Mikael Ståldal <
>>>>>>> mikael.stal...@magine.com> wrote:
>>>>>>>
>>>>>>>> Kafka server 0.8 is still in use, and newer Kafka clients cannot
>>>>>>>> connect to older Kafka servers.
>>>>>>>>
>>>>>>>
>>>>>>> There will always be users of old software. That does not mean that
>>>>>>> new versions of Log4j must support old software, especially pre-1.0
>>>>>>> software.
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Sep 28, 2016 at 5:10 PM, Gary Gregory <
>>>>>>>> garydgreg...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> I do not think it makes sense to support old versions that are not
>>>>>>>>> even 1.0.
>>>>>>>>>
>>>>>>>>> Gary
>>>>>>>>>
>>>>>>>>> On Wed, Sep 28, 2016 at 7:42 AM, Mikael Ståldal <
>>>>>>>>> mikael.stal...@magine.com> wrote:
>>>>>>>>>
>>>>>>>>>> I fixed the Kafka issue and pushed it to master branch.
>>>>>>>>>>
>>>>>>>>>> However, I have another concern, what timeout value is actually
>>>>>>>>>> passed in to AbstractManager.releaseSub ?
>>>>>>>>>>
>>>>>>>>>> On Wed, Sep 28, 2016 at 3:51 PM, Mikael Ståldal <
>>>>>>>>>> mikael.stal...@magine.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> -1 since the Kafka appender now only works with Kafka client
>>>>>>>>>>> (and thus server) 0.9+, even though we agreed to keep compatibility 
>>>>>>>>>>> with
>>>>>>>>>>> 0.8 for the time being:
>>>>>>>>>>>
>>>>>>>>>>> https://issues.apache.org/jira/browse/LOG4J2-1390
>>>>>>>>>>>
>>>>>>>>>>> The problem appeared with commit 
>>>>>>>>>>> 170469514b374eb5a5a33bde6936162fd608f097
>>>>>>>>>>> by Gary in KafkaManager.java (method releaseSub).
>>>>>>>>>>>
>>>>>>>>>>> I get this error with kafka-clients 0.8.2.2:
>>>>>>>>>>>
>>>>>>>>>>> java.lang.NoSuchMethodError: org.apache.kafka.clients.produ
>>>>>>>>>>> cer.Producer.close(JLjava/util/concurrent/TimeUnit;)V
>>>>>>>>>>> at org.apache.logging.log4j.core.appender.mom.kafka.KafkaManage
>>>>>>>>>>> r.releaseSub(KafkaManager.java:61)
>>>>>>>>>>> at org.apache.logging.log4j.core.appender.AbstractManager.stop(
>>>>>>>>>>> AbstractManager.java:85)
>>>>>>>>>>> at org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppend
>>>>>>>>>>> er.stop(KafkaAppender.java:107)
>>>>>>>>>>> at org.apache.logging.log4j.core.config.AbstractConfiguration.s
>>>>>>>>>>> top(AbstractConfiguration.java:349)
>>>>>>>>>>> at org.apache.logging.log4j.core.LoggerContext.stop(LoggerConte
>>>>>>>>>>> xt.java:329)
>>>>>>>>>>> at org.apache.logging.log4j.core.AbstractLifeCycle.stop(Abstrac
>>>>>>>>>>> tLifeCycle.java:127)
>>>>>>>>>>> at org.apache.logging.log4j.core.LoggerContext$1.run(LoggerCont
>>>>>>>>>>> ext.java:275)
>>>>>>>>>>> at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRe
>>>>>>>>>>> gistry$RegisteredCancellable.run(DefaultShutdownCallbackRegi
>>>>>>>>>>> stry.java:104)
>>>>>>>>>>> at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRe
>>>>>>>>>>> gistry.run(DefaultShutdownCallbackRegistry.java:74)
>>>>>>>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Sep 26, 2016 at 5:50 PM, Ralph Goers <
>>>>>>>>>>> ralph.go...@dslextreme.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> This is a vote to release Log4j 2.6.2, the next version of the
>>>>>>>>>>>> Log4j 2 project.
>>>>>>>>>>>>
>>>>>>>>>>>> Please download, test, and cast your votes on the log4j
>>>>>>>>>>>> developers list.
>>>>>>>>>>>> [] +1, release the artifacts
>>>>>>>>>>>> [] -1, don't release because...
>>>>>>>>>>>>
>>>>>>>>>>>> The vote will remain open for 72 hours (or more if required).
>>>>>>>>>>>> All votes are welcome and we encourage everyone to test the 
>>>>>>>>>>>> release, but
>>>>>>>>>>>> only Logging PMC votes are “officially” counted. As always, at 
>>>>>>>>>>>> least 3 +1
>>>>>>>>>>>> votes and more positive than negative votes are required.
>>>>>>>>>>>>
>>>>>>>>>>>> Changes in this version include:
>>>>>>>>>>>>
>>>>>>>>>>>> New features:
>>>>>>>>>>>> o LOG4J2-1578:  RoutingAppender can be configured with scripts. 
>>>>>>>>>>>> Add Script in a Routes element.
>>>>>>>>>>>> o LOG4J2-1597:  Add a ScriptAppenderSelector to create an Appender 
>>>>>>>>>>>> specified by a Script.
>>>>>>>>>>>> o LOG4J2-1349:  (GC) Added support for garbage-free ThreadContext 
>>>>>>>>>>>> map. Disabled by default, users need to enable this explicitly.
>>>>>>>>>>>> o LOG4J2-1447:  (GC) Changed LogEvent's internal data structure 
>>>>>>>>>>>> for context data to be garbage-free. Added method 
>>>>>>>>>>>> LogEvent#getContextData(), deprecated method #getContextMap().
>>>>>>>>>>>> o LOG4J2-1010:  Users can now inject context data from other 
>>>>>>>>>>>> sources than ThreadContext. Values can be any Object, not just 
>>>>>>>>>>>> Strings. Thanks to Mikael Ståldal.
>>>>>>>>>>>> o LOG4J2-1568:  Added support for 
>>>>>>>>>>>> java.util.concurrent.LinkedTransferQueue to AsyncAppender.
>>>>>>>>>>>> o LOG4J2-1430:  Added optional support for Conversant 
>>>>>>>>>>>> DisruptorBlockingQueue in AsyncAppender. Thanks to John Cairns.
>>>>>>>>>>>> o LOG4J2-1439:  Added optional support for JCTools MPSC bounded 
>>>>>>>>>>>> lock-free queue in AsyncAppender. Thanks to Anthony Maire.
>>>>>>>>>>>> o LOG4J2-1558:  SocketAppender now supports IO buffering.
>>>>>>>>>>>> o LOG4J2-1557:  Add a Builder for the SocketAppender (deprecates 
>>>>>>>>>>>> factory method).
>>>>>>>>>>>> o LOG4J2-1609:  Add a Builder to ServletAppender and deprecate 
>>>>>>>>>>>> factory method.
>>>>>>>>>>>> o LOG4J2-1553:  AbstractManager now implements AutoCloseable.
>>>>>>>>>>>> o LOG4J2-1528:  Added ability to generate Log4j 2-style XML 
>>>>>>>>>>>> configuration file from ConfigurationBuilder.
>>>>>>>>>>>> o LOG4J2-1181:  Added Logging API for Scala 2.10 and 2.11.
>>>>>>>>>>>> o LOG4J2-1512:  Added options to exclude stack trace from JSON, 
>>>>>>>>>>>> XML and YAML layouts.
>>>>>>>>>>>> o LOG4J2-1539:  Added Core API 
>>>>>>>>>>>> Configurator.shutdown(LoggerContext, long, TimeUnit).
>>>>>>>>>>>> o LOG4J2-1501:  FileAppender is now able to create files on-demand.
>>>>>>>>>>>> o LOG4J2-1504:  RollingFileAppender is now able to create files 
>>>>>>>>>>>> on-demand.
>>>>>>>>>>>> o LOG4J2-1471:  [PatternLayout] Add an ANSI option to %xThrowable.
>>>>>>>>>>>> o LOG4J2-1472:  org.apache.logging.log4j.core.LoggerContext now 
>>>>>>>>>>>> implements Closeable.
>>>>>>>>>>>> o LOG4J2-1458:  [PatternLayout] Add an ANSI option to %message.
>>>>>>>>>>>> o LOG4J2-1505:  Create a Builder for the FileAppender plugin to 
>>>>>>>>>>>> facilitate adding attributes in the future.
>>>>>>>>>>>> o LOG4J2-1507:  Allow Builders to be completely generic.
>>>>>>>>>>>> o LOG4J2-1508:  Allow a Builder to subclass another Builder.
>>>>>>>>>>>> o LOG4J2-1516:  Add ThreadContextMap2 interface supporting method 
>>>>>>>>>>>> putAll(Map<String, String>). Thanks to Gary Gregory.
>>>>>>>>>>>> o LOG4J2-1519:  Add ThreadContext.putAll(Map<String, String>).
>>>>>>>>>>>> o LOG4J2-1520:  Add JUnit Rule implementations to manage the 
>>>>>>>>>>>> thread context.
>>>>>>>>>>>> o LOG4J2-1547:  The Core AbstractConfiguration now tracks its 
>>>>>>>>>>>> LoggerContext and add Configuration.getLoggerContext().
>>>>>>>>>>>> o LOG4J2-1540:  The Core AbstractManager now tracks its 
>>>>>>>>>>>> LoggerContext.
>>>>>>>>>>>> o LOG4J2-1577:  Add a Builder to the RoutingAppender and deprecate 
>>>>>>>>>>>> factory method.
>>>>>>>>>>>>
>>>>>>>>>>>> Fixed Bugs:
>>>>>>>>>>>> o LOG4J2-1611:  Improved performance of context data injector for 
>>>>>>>>>>>> web applications to be on par with standalone applications.
>>>>>>>>>>>> o LOG4J2-1591:  Introduced new interface LifeCycle2 with 
>>>>>>>>>>>> stop(long,TimeUnit) method to avoid breaking backwards 
>>>>>>>>>>>> compatibility with new Configurator.shutdown(LoggerContext, long, 
>>>>>>>>>>>> TimeUnit) API.
>>>>>>>>>>>> o LOG4J2-1590:  Fixed issue with filters extending AbstractFilter 
>>>>>>>>>>>> that did not override methods with unrolled varargs.
>>>>>>>>>>>> o LOG4J2-1583:  Fixed scrambled log messages triggered by nested 
>>>>>>>>>>>> logging from toString() method of a logging parameter object. 
>>>>>>>>>>>> Thanks to Larry West.
>>>>>>>>>>>> o LOG4J2-1259:  Log4j threads are no longer leaking on Tomcat 
>>>>>>>>>>>> shutdown. Thanks to Misagh Moayyed, Steffen Offermann.
>>>>>>>>>>>> o LOG4J2-1051:  When starting on Google App Engine, Interpolator 
>>>>>>>>>>>> now suppresses the NoClassDefFoundError stack trace  for the 
>>>>>>>>>>>> jvmrunargs lookup. Thanks to Lukasz Lenart.
>>>>>>>>>>>> o LOG4J2-1582:  When initializing on platforms where JMX is not 
>>>>>>>>>>>> available, Interpolator component no longer prints stack trace for 
>>>>>>>>>>>> warning messages.
>>>>>>>>>>>> o LOG4J2-1581:  Unregistering JMX components no longer prints a 
>>>>>>>>>>>> stack trace when the MBean has already been unregistered.
>>>>>>>>>>>> o LOG4J2-1313:  Support Property values to be specified in 
>>>>>>>>>>>> configuration as a value attribute as well as an element. Thanks 
>>>>>>>>>>>> to Philipp Knobel, Leon Finker.
>>>>>>>>>>>> o LOG4J2-1575:  (GC) LoggerConfig now stores configuration 
>>>>>>>>>>>> properties in a List, not a Map to prevent creating temporary 
>>>>>>>>>>>> Iterator objects. Added method LoggerConfig#getPropertyList(), 
>>>>>>>>>>>> deprecated method #getProperties().
>>>>>>>>>>>> o LOG4J2-1457:  Fixed class loader deadlock when using async 
>>>>>>>>>>>> logging and extended stack trace pattern. Thanks to Leon Finker.
>>>>>>>>>>>> o LOG4J2-1563:  Fix to prevent Log4j 2.6.2 and higher from losing 
>>>>>>>>>>>> exceptions when a security manager is present. Thanks to Jason 
>>>>>>>>>>>> Tedor.
>>>>>>>>>>>> o LOG4J2-1530:  Fixed issue where LogEvent.getContextStack() 
>>>>>>>>>>>> returned null.
>>>>>>>>>>>> o LOG4J2-1518:  Prevent deadlock in Async Loggers when queue is 
>>>>>>>>>>>> full and logged Object's toString() logs another message. Thanks 
>>>>>>>>>>>> to Leon Finker.
>>>>>>>>>>>> o LOG4J2-1542:  Prevent ArrayIndexOutOfBoundsException in 
>>>>>>>>>>>> ParameterizedMessage.formatTo for single-char or empty messages. 
>>>>>>>>>>>> Thanks to Rogério Lecarião Leite.
>>>>>>>>>>>> o LOG4J2-1549:  Fixed issue where 
>>>>>>>>>>>> AsyncLoggerContextSelector+PropertiesConfigurationBuilder 
>>>>>>>>>>>> defaulted to includeLocation=true. Thanks to Jason Bedard.
>>>>>>>>>>>> o LOG4J2-1562:  Prevent SocketAppender memory usage from growing 
>>>>>>>>>>>> unbounded if it cannot connect to a server.
>>>>>>>>>>>> o LOG4J2-1559:  Prevent NPE in Level.isInRange. Thanks to Andrey 
>>>>>>>>>>>> Plotkin.
>>>>>>>>>>>> o LOG4J2-1511:  DynamicThresholdFilter filtered incorrectly when 
>>>>>>>>>>>> params were passed as individual arguments instead of varargs. 
>>>>>>>>>>>> Thanks to Srikanth Surukuntu.
>>>>>>>>>>>> o LOG4J2-1548:  [CronTriggeringPolicy] ConfigurationScheduler 
>>>>>>>>>>>> scheduled the task infinitely after first fire.
>>>>>>>>>>>> o LOG4J2-1506:  Log4j should not unregister JMX MBeans when 
>>>>>>>>>>>> log4j2.disable.jmx property is true. Thanks to Johannes Schleger.
>>>>>>>>>>>> o LOG4J2-1490:  Log4j2 should postpone creating log file until the 
>>>>>>>>>>>> appender actually receives an event. Thanks to Krzysztof Taborski.
>>>>>>>>>>>> o LOG4J2-1320:  Support loading custom plugins from jar files and 
>>>>>>>>>>>> directories whose classpath entries use the "vfs" URL protocol. 
>>>>>>>>>>>> Thanks to Paresh Varke, Pierrick Hymbert.
>>>>>>>>>>>> o LOG4J2-1541:  Fix file handle resource leak in 
>>>>>>>>>>>> XmlConfiguration.XmlConfiguration(ConfigurationSource).
>>>>>>>>>>>> o LOG4J2-1538:  Prevent NPE when dynamically removing filters. 
>>>>>>>>>>>> Thanks to Igor Karpov.
>>>>>>>>>>>> o LOG4J2-1532:  Attributes were not merged properly in composite 
>>>>>>>>>>>> configurations.
>>>>>>>>>>>> o LOG4J2-1529:  Attributes were not merged properly in composite 
>>>>>>>>>>>> configurations. Thanks to Sridevi Narra.
>>>>>>>>>>>> o LOG4J2-1527:  Prevent NPE in 
>>>>>>>>>>>> RingBufferLogEvent.getFormattedMessage() when used in web 
>>>>>>>>>>>> applications. Thanks to Jose Leon.
>>>>>>>>>>>> o LOG4J2-905:  Added ability to disable (date) lookup completely 
>>>>>>>>>>>> for compatibility with other libraries like Camel. Thanks to 
>>>>>>>>>>>> Moritz Löser.
>>>>>>>>>>>> o LOG4J2-1526:  Added support for setting StatusLogger destination 
>>>>>>>>>>>> in ConfigurationBuilder.
>>>>>>>>>>>> o LOG4J2-1448:  Allow comma separated agents, host list to be 
>>>>>>>>>>>> passed to FlumeAppender. Thanks to Keith Laban.
>>>>>>>>>>>> o LOG4J2-1500:  Merging configurations failed with an NPE when 
>>>>>>>>>>>> comparing Nodes with different attributes. Thanks to Jose Leon.
>>>>>>>>>>>> o LOG4J2-1482:  Fixed improper header in CsvParameterLayout. 
>>>>>>>>>>>> Thanks to Sumit Singhal.
>>>>>>>>>>>> o LOG4J2-1199:  Documented that JVM Input Arguments Lookup (JMX) 
>>>>>>>>>>>> is not available on Google App Engine.
>>>>>>>>>>>> o LOG4J2-1438:  (GC) Added method getParameter() to ObjectMessage 
>>>>>>>>>>>> (and ReusableObjectMessage).
>>>>>>>>>>>> o LOG4J2-1488:  (GC) Fixed ISO8601 %date conversion pattern with a 
>>>>>>>>>>>> period '.' separator for milliseconds is now garbage free. Thanks 
>>>>>>>>>>>> to Richard Zschech.
>>>>>>>>>>>> o LOG4J2-1489:  (GC) Fixed %date conversion patterns with a 
>>>>>>>>>>>> timezone parameter are now garbage free. Thanks to Richard Zschech.
>>>>>>>>>>>> o LOG4J2-1279:  Prevent NullPointerException in 
>>>>>>>>>>>> FastDateParser$TimeZoneStrategy. Thanks to Tony Baines.
>>>>>>>>>>>> o LOG4J2-1341:  (GC) HighlightConverter and StyleConverter are now 
>>>>>>>>>>>> GC-free. Thanks to Richard Zschech.
>>>>>>>>>>>> o LOG4J2-1467:  [OSGi] Fixed missing import package. Thanks to 
>>>>>>>>>>>> Ralf, Gary Gregory.
>>>>>>>>>>>> o LOG4J2-351:  [OSGi] Fixed wrong Fragment-Host in manifest files. 
>>>>>>>>>>>> Thanks to Roland Weiglhofer.
>>>>>>>>>>>> o LOG4J2-1313:  Properties declared in configuration can now have 
>>>>>>>>>>>> their value either in the element body or in an attribute named 
>>>>>>>>>>>> "value". Thanks to Philipp Knobel.
>>>>>>>>>>>> o LOG4J2-1235:  
>>>>>>>>>>>> org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy was 
>>>>>>>>>>>> not working correctly. Thanks to Niranjan Rao, Sascha Scholz, 
>>>>>>>>>>>> Aleksey Zvolinsky.
>>>>>>>>>>>> o LOG4J2-1502:  Fixed issue where CsvParameterLayout and 
>>>>>>>>>>>> CsvLogEventLayout inserted NUL characters if data starts with {, 
>>>>>>>>>>>> (, [ or " Thanks to Sumit Singhal.
>>>>>>>>>>>> o LOG4J2-1573:  Layout is no longer optional. Thanks to Steffen 
>>>>>>>>>>>> Offermann.
>>>>>>>>>>>> o LOG4J2-1608:  ServletAppender does not provide throwable object 
>>>>>>>>>>>> to ServletContext.
>>>>>>>>>>>> o LOG4J2-1599:  Prevent potential NPE in 
>>>>>>>>>>>> org.apache.logging.log4j.message.ParameterFormatter.formatMessage3(StringBuilder,
>>>>>>>>>>>>  char[], int, Object[], int, int[]).
>>>>>>>>>>>> o LOG4J2-1600:  Prevent potential NPE due to 
>>>>>>>>>>>> org.apache.logging.log4j.core.layout.MarkerPatternSelector.createSelector(PatternMatch[],
>>>>>>>>>>>>  String, boolean, boolean, Configuration).
>>>>>>>>>>>> o LOG4J2-1601:  Prevent potential NPE due to 
>>>>>>>>>>>> org.apache.logging.log4j.core.layout.ScriptPatternSelector.createSelector(AbstractScript,
>>>>>>>>>>>>  PatternMatch[], String, boolean, boolean, Configuration).
>>>>>>>>>>>> o LOG4J2-1602:  Prevent potential NPE in 
>>>>>>>>>>>> org.apache.logging.log4j.core.util.datetime.FormatCache.MultipartKey.equals(Object)
>>>>>>>>>>>>  when object is null.
>>>>>>>>>>>> o LOG4J2-1603:  Redo hashCode() and equals() methods in 
>>>>>>>>>>>> org.apache.logging.log4j.core.net.ssl classes.
>>>>>>>>>>>> o LOG4J2-1610:  Add targetNamespace to log4j-config.xsd. GitHub 
>>>>>>>>>>>> #43. Thanks to Shubhankar.
>>>>>>>>>>>>
>>>>>>>>>>>> Changes:
>>>>>>>>>>>> o LOG4J2-1604:  Log4j2 TcpSocketServer in background. Thanks to 
>>>>>>>>>>>> Colin Hillman.
>>>>>>>>>>>> o LOG4J2-1574:  Allow the RollingFileAppender to use default 
>>>>>>>>>>>> pattern layout.
>>>>>>>>>>>> o LOG4J2-1556:  Custom Log4j threads now extend Log4jThread.
>>>>>>>>>>>> o LOG4J2-1605:  Improve error messages for TcpSocketServer and 
>>>>>>>>>>>> UdpSocketServer.
>>>>>>>>>>>> o LOG4J2-1458:  Updated Jackson from 2.7.5 to 2.8.0.
>>>>>>>>>>>> o LOG4J2-1494:  Updated Jackson from 2.8.0 to 2.8.1.
>>>>>>>>>>>> o LOG4J2-1569:  Updated Jackson from 2.8.1 to 2.8.2.
>>>>>>>>>>>> o LOG4J2-1598:  Updated Jackson from 2.8.2 to 2.8.3.
>>>>>>>>>>>> o LOG4J2-1495:  Updated LMAX Disruptor from 3.3.4 to 3.3.5.
>>>>>>>>>>>> o LOG4J2-1496:  Updated Kafka client from 0.9.1.0 to 0.10.0.0.
>>>>>>>>>>>> o LOG4J2-1533:  Updated Kafka client from 0.10.0.0 to 0.10.0.1.
>>>>>>>>>>>> o LOG4J2-1487:  Updated JMS test from ActiveMQ 5.13.3 to 5.13.4.
>>>>>>>>>>>> o LOG4J2-1551:  Updated JMS test from ActiveMQ 5.13.4 to 5.14.0.
>>>>>>>>>>>> o LOG4J2-1543:  Removed deprecated Core API 
>>>>>>>>>>>> org.apache.logging.log4j.core.util.Constants.UTF_8.
>>>>>>>>>>>> o LOG4J2-1544:  Removed deprecated Core API 
>>>>>>>>>>>> org.apache.logging.log4j.core.util.Assert.requireNonNull(T, 
>>>>>>>>>>>> String).
>>>>>>>>>>>> o LOG4J2-1545:  Removed deprecated Web API 
>>>>>>>>>>>> org.apache.logging.log4j.web.WebLookup.getServletContext().
>>>>>>>>>>>>
>>>>>>>>>>>> Tag:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> a)  for a new copy do "git clone 
>>>>>>>>>>>> https://git-wip-us.apache.org/repos/asf/logging-log4j2.git"; and 
>>>>>>>>>>>> then "git checkout tags/log4j-2.7-rc1”
>>>>>>>>>>>> b) for an existing working copy to “git pull” and then “git 
>>>>>>>>>>>> checkout tags/log4j-2.7-rc1”
>>>>>>>>>>>>
>>>>>>>>>>>> Web Site:  
>>>>>>>>>>>> <http://rgoers.github.io/log4j2-site/index.html>http://rgoers.github.io/log4j2-site/index.html
>>>>>>>>>>>>
>>>>>>>>>>>> Artifacts: 
>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachelogging-1021/
>>>>>>>>>>>>
>>>>>>>>>>>> You may download all the artifacts by executing:
>>>>>>>>>>>>
>>>>>>>>>>>> wget -e robots=off --cut-dirs=7 -nH -r -p -np 
>>>>>>>>>>>> --no-check-certificate 
>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachelogging-1021/org/apache/logging/log4j/
>>>>>>>>>>>>
>>>>>>>>>>>> Ralph
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> [image: MagineTV]
>>>>>>>>>>>
>>>>>>>>>>> *Mikael Ståldal*
>>>>>>>>>>> Senior software developer
>>>>>>>>>>>
>>>>>>>>>>> *Magine TV*
>>>>>>>>>>> mikael.stal...@magine.com
>>>>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>>>>>>>
>>>>>>>>>>> Privileged and/or Confidential Information may be contained in
>>>>>>>>>>> this message. If you are not the addressee indicated in this message
>>>>>>>>>>> (or responsible for delivery of the message to such a person),
>>>>>>>>>>> you may not copy or deliver this message to anyone. In such case,
>>>>>>>>>>> you should destroy this message and kindly notify the sender by
>>>>>>>>>>> reply email.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> [image: MagineTV]
>>>>>>>>>>
>>>>>>>>>> *Mikael Ståldal*
>>>>>>>>>> Senior software developer
>>>>>>>>>>
>>>>>>>>>> *Magine TV*
>>>>>>>>>> mikael.stal...@magine.com
>>>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>>>>>>
>>>>>>>>>> Privileged and/or Confidential Information may be contained in
>>>>>>>>>> this message. If you are not the addressee indicated in this message
>>>>>>>>>> (or responsible for delivery of the message to such a person),
>>>>>>>>>> you may not copy or deliver this message to anyone. In such case,
>>>>>>>>>> you should destroy this message and kindly notify the sender by
>>>>>>>>>> reply email.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> [image: MagineTV]
>>>>>>>>
>>>>>>>> *Mikael Ståldal*
>>>>>>>> Senior software developer
>>>>>>>>
>>>>>>>> *Magine TV*
>>>>>>>> mikael.stal...@magine.com
>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>>>>
>>>>>>>> Privileged and/or Confidential Information may be contained in this
>>>>>>>> message. If you are not the addressee indicated in this message
>>>>>>>> (or responsible for delivery of the message to such a person), you
>>>>>>>> may not copy or deliver this message to anyone. In such case,
>>>>>>>> you should destroy this message and kindly notify the sender by
>>>>>>>> reply email.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> [image: MagineTV]
>>>>>>
>>>>>> *Mikael Ståldal*
>>>>>> Senior software developer
>>>>>>
>>>>>> *Magine TV*
>>>>>> mikael.stal...@magine.com
>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>>
>>>>>> Privileged and/or Confidential Information may be contained in this
>>>>>> message. If you are not the addressee indicated in this message
>>>>>> (or responsible for delivery of the message to such a person), you
>>>>>> may not copy or deliver this message to anyone. In such case,
>>>>>> you should destroy this message and kindly notify the sender by reply
>>>>>> email.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> [image: MagineTV]
>>>>>
>>>>> *Mikael Ståldal*
>>>>> Senior software developer
>>>>>
>>>>> *Magine TV*
>>>>> mikael.stal...@magine.com
>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>
>>>>> Privileged and/or Confidential Information may be contained in this
>>>>> message. If you are not the addressee indicated in this message
>>>>> (or responsible for delivery of the message to such a person), you may
>>>>> not copy or deliver this message to anyone. In such case,
>>>>> you should destroy this message and kindly notify the sender by reply
>>>>> email.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>> Java Persistence with Hibernate, Second Edition
>>>> <http://www.manning.com/bauer3/>
>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>> Blog: http://garygregory.wordpress.com
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>
>>>
>>>
>>> --
>>> [image: MagineTV]
>>>
>>> *Mikael Ståldal*
>>> Senior software developer
>>>
>>> *Magine TV*
>>> mikael.stal...@magine.com
>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>
>>> Privileged and/or Confidential Information may be contained in this
>>> message. If you are not the addressee indicated in this message
>>> (or responsible for delivery of the message to such a person), you may
>>> not copy or deliver this message to anyone. In such case,
>>> you should destroy this message and kindly notify the sender by reply
>>> email.
>>>
>>
>>
>>
>> --
>> [image: MagineTV]
>>
>> *Mikael Ståldal*
>> Senior software developer
>>
>> *Magine TV*
>> mikael.stal...@magine.com
>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>
>> Privileged and/or Confidential Information may be contained in this
>> message. If you are not the addressee indicated in this message
>> (or responsible for delivery of the message to such a person), you may
>> not copy or deliver this message to anyone. In such case,
>> you should destroy this message and kindly notify the sender by reply
>> email.
>>
>
>
>
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
[image: MagineTV]

*Mikael Ståldal*
Senior software developer

*Magine TV*
mikael.stal...@magine.com
Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com

Privileged and/or Confidential Information may be contained in this
message. If you are not the addressee indicated in this message
(or responsible for delivery of the message to such a person), you may not
copy or deliver this message to anyone. In such case,
you should destroy this message and kindly notify the sender by reply
email.

Reply via email to