On Thu, Sep 29, 2016 at 10:05 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> Please wait to cut rc2, I am fixing a regression: > https://issues.apache.org/jira/browse/LOG4J2-1620 > Fixed. This looks like it needs addressing: https://issues.apache.org/jira/browse/LOG4J2-1618 Gary > > Gary > > On Thu, Sep 29, 2016 at 9:31 AM, Mikael Ståldal <mikael.stal...@magine.com > > wrote: > >> I created JIRA issues for the Kafka and Flume appender timeout issues, >> and I have fixed both of them in master branch. >> https://issues.apache.org/jira/browse/LOG4J2-1624 >> https://issues.apache.org/jira/browse/LOG4J2-1625 >> >> I also created a JIRA issue for the JVM shutdown hook, but that not as >> easy to fix and I would not consider it a blocker for the 2.7 release. We >> can fix it for 2.7.1: >> https://issues.apache.org/jira/browse/LOG4J2-1623 >> >> I think we can go ahead now and make an 2.7-rc2 from the current state of >> master branch. >> >> >> On Thu, Sep 29, 2016 at 3:45 PM, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >>> The release is already delayed. So far we have two compatibility issues >>> that need to be fixed. Please create a Jira issue for the Flume Appender >>> and the JVM shutdown hook. Lets gets those fixed. And perhaps we should >>> stop doing things that aren’t directly focused on getting the release out >>> as they may well introduce more problems. >>> >>> Ralph >>> >>> On Sep 29, 2016, at 5:16 AM, Mikael Ståldal <mikael.stal...@magine.com> >>> wrote: >>> >>> 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.KafkaManager.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.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.r >>>>>>>>>>>>>> un(DefaultShutdownCallbackRegistry.java:104) >>>>>>>>>>>>>> at org.apache.logging.log4j.core. >>>>>>>>>>>>>> util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCall >>>>>>>>>>>>>> backRegistry.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. >>> >>> >>> >> >> >> -- >> [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 > -- 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