Return-Path: X-Original-To: apmail-logging-log4j-dev-archive@www.apache.org Delivered-To: apmail-logging-log4j-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 703301872A for ; Tue, 22 Sep 2015 22:33:19 +0000 (UTC) Received: (qmail 40238 invoked by uid 500); 22 Sep 2015 22:33:19 -0000 Delivered-To: apmail-logging-log4j-dev-archive@logging.apache.org Received: (qmail 40186 invoked by uid 500); 22 Sep 2015 22:33:19 -0000 Mailing-List: contact log4j-dev-help@logging.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Log4J Developers List" Reply-To: "Log4J Developers List" Delivered-To: mailing list log4j-dev@logging.apache.org Received: (qmail 40164 invoked by uid 99); 22 Sep 2015 22:33:19 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Sep 2015 22:33:19 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 83B231A58DC; Tue, 22 Sep 2015 22:33:18 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3.15 X-Spam-Level: *** X-Spam-Status: No, score=3.15 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, KAM_LOTSOFHASH=0.25, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id YypEaIRhLLKK; Tue, 22 Sep 2015 22:33:07 +0000 (UTC) Received: from mail-la0-f52.google.com (mail-la0-f52.google.com [209.85.215.52]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTPS id 48AE944182; Tue, 22 Sep 2015 22:33:06 +0000 (UTC) Received: by lahh2 with SMTP id h2so6326699lah.0; Tue, 22 Sep 2015 15:33:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=qENhEd5Lv+X2DDu3xP9GLUBYyMfsTgedOogOCttTDjk=; b=eO/xLrajTpmMMDmRgUpTA0Ueg4d85zLiXeJv0+x+PI8muR4BXfyEBBCxxX0e/og+a+ E9JAnQXRz7saOH6cY6PTHh/+plDdu3ExID4p/DMWSSzppVz8qVIc33iXuk6rZEguOv9h qPjYou6Ia05FdVK3qQVRA43V+q25h5qFaGCbgV1XH4DQuzAVCHjFffIoJPeeS5PGmXY1 srIxdM7NgptM1ftnWv0ZHQ0wg8TtJvKSMRMsm25Ojq+M52zxFsh956Zw1bHL7y2ISYqG noOqKElchpwMHMLxBBttFbdY//4NImIkWcS4B6NTS+zuCA+IwBqeDUKqnfY+xQ7cc/oh S/1A== MIME-Version: 1.0 X-Received: by 10.112.17.70 with SMTP id m6mr6245862lbd.0.1442961184856; Tue, 22 Sep 2015 15:33:04 -0700 (PDT) Received: by 10.112.126.66 with HTTP; Tue, 22 Sep 2015 15:33:04 -0700 (PDT) In-Reply-To: References: <1F8D89BF-01FE-4862-B666-DB09604EE1B9@dslextreme.com> Date: Tue, 22 Sep 2015 15:33:04 -0700 Message-ID: Subject: Re: [VOTE] Log4j 2.4 rc1 From: Gary Gregory To: Log4J Developers List Cc: Logging PMC Content-Type: multipart/alternative; boundary=001a11c3d3e2d9224405205d94db --001a11c3d3e2d9224405205d94db Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Is LOG4J2-1127 worth another RC? Gary On Mon, Sep 21, 2015 at 8:32 PM, Remko Popma wrote: > (Including PMC in recipients) > > > +1 > > I see many issues with the site (details below), but AFAICS no > showstoppers - unless we consider dependency-convergence mandatory? > I also found a bug in CsvLogEventLayout: NanoTime will always be zero > (need to set NanoClockFactory mode - details below). > > ---- > (Notation: "-": current problematic text to be replaced, "+": replacement > text) > ---- > > changelog.html (outdated/wrong) > -Configuration via property files is not supported. > +Configuration via property files is supported from version 2.4, but is > not compatible with Log4j 1.x. > > changes.xml (improvement) > -LOG4J2-952: Add ConfigurationBuilder. > +LOG4J2-952: Add ConfigurationBuilder for programmatic configuration. > > faq.html (outdated, duplicate) > * Under "How do I configure log4j2 in code without a configuration file?" > -You could use the static method #initialize(String contextName, > ClassLoader loader, String configLocation) (see source code) in > org.apache.logging.log4j.core.config.Configurator. (You can pass null for > the class loader.) Be aware that this class is not part of the public API > so your code may break with any minor release. > +From 2.4, Log4j 2 provides an [API for programmatic > configuration|manual/customconfig.html]. The new ConfigurationBuilder API > allows you to create Configurations in code by constructing component > _definitions_ without requiring you to know about the internals of actual > configuration objects like Loggers and Appenders. > > * Merge these answers into a single Q&A entry: > "How do I change a logger's level in code?" and > "How do I set a logger's level programmatically?" > > * Version > -the log4j-api-2.1 and the log4j-core-2.1 jar files > +the log4j-api-2.4 and the log4j-core-2.4 jar files > > > manual/appenders.html (site errors and ambiguities) > * Kafka Appender is missing from the left nav-bar in Appenders > > -The KafkaAppender log events > +The KafkaAppender logs events > > -lilter (Parameter Name) > +filter > > -If you do not specify a layout, if not specified the formatted message a= s > an UTF-8 encoded string will be sent to Kafka. > +If you do not specify a layout, the formatted message will be sent to > Kafka as an UTF-8 encoded string. > > -This appender requires Kafka client library > +This appender requires Kafka client library. (add period at end) > > > ZeroMQ appender: > * Section title and left nav-bar title should be "JeroMQ". (and section > will need to move to keep alphabetic order) > * Is a layout required? What layout is used if nothing is specified? > > -The name of the Appender. > +The name of the Appender. Required. > > (Parameter Name) > -Layout > +layout (lower case) > > -Filters > +filters (lower case); other appenders use singular "filter" without > trailing 's', but the code for JeroMQ says @PluginElement("Filters") Filt= er > filter > > -Property, Type=3DProperty > +properties (lower case, plural), Type=3DProperty[] - to be consistent wi= th > docs for PropertiesRewritePolicy in RewriteAppender > > > manual/layouts.html (CsvLogEventLayout bug, site errors) > * CSV Layout is missing from the left nav-bar in Layouts > * CSV Layout section should mention dependency on Apache Commons CSV. (Se= e > JSONLayout on same page.) > * Bug: CsvLogEventLayout generates NanoTime timestamps but these are > always zero. > To fix this, add the below code to the CsvLogEventLayout constructor: > // LOG4J2-1074 Switch to actual clock if nanosecond timestamps are > required in config. > // LoggerContext will notify known NanoClockFactory users that the > configuration has changed. > NanoClockFactory.setMode(NanoClockFactory.Mode.System); > > * GELF Layout should be before HTML Layout in body text and in left > nav-bar (alphabetical order) > * HTML Layout should be before JSON Layout in body text (alphabetical > order - the nav-bar order is correct) > * (Under Location Information) > -%C or $class - this is rendered as "%C or class java.lang.Object" > +%C or %class > > > manual/customconfig.html (improvements) > * Side-nav menu title "Extending Log4j Configuration" should be > "Programmatic Log4j Configuration" > * Title "Custom Configurations" -> "Programmatic Configuration" > > > log4j-api/dependency-convergence.html > Error: You do not have 100 % convergence. - is this a showstopper? > > log4j-api/clirr-report.html > 77 Clirr errors - I believe these are all expected and can be ignored. > > log4j-api/checkstyle.html > 122 checkstyle errors - not showstoppers > > log4j-core/index.html > * Missing dependency information for JeroMQ/ZeroMQ Appender on JeroMQ > library > * Missing dependency information for CSV layouts on Apache Commons CSV > > log4j-core/dependency-convergence.html > Error: You do not have 100 % convergence. - Is this a showstopper? > > log4j-core/checkstyle.html > 1652 checkstyle errors - not showstoppers > > > log4j-liquibase/index.html > -due the the plugin auto discovery > -due to the plugin auto discovery > > log4j-liquibase/dependency-convergence.html > Error: You do not have 100 % convergence. - Is this a showstopper? > > > > > On Mon, Sep 21, 2015 at 11:04 AM, Ralph Goers > wrote: > >> This is a vote to release Log4j 2.4, 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, but only Logging PMC votes are =E2=80=9Cofficially=E2= =80=9D 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-635: Add support for configuration via Properties. >> >> o LOG4J2-952: Add ConfigurationBuilder. >> >> o LOG4J2-599: Added support for Java 8 lambda expressions to lazily >> construct a log message only if >> >> the requested log level is enabled. >> >> o LOG4J2-1118: Updated Logger wrapper generator tool to add Java 8 >> lambda support for custom log levels. >> >> o LOG4J2-1107: New Appender for Apache Kafka. Thanks to Mikael St=C3=A5= ldal. >> >> o LOG4J2-1113: New publisher Appender for ZeroMQ (using JeroMQ). Thanks >> to Gary Gregory. >> >> o LOG4J2-1088: Add Comma Separated Value (CSV) layouts for parameter an= d >> event logging. Thanks to Gary Gregory. >> >> o LOG4J2-1090: Add Core Configurator APIs to change a logger's level. >> >> o LOG4J2-1105: Add API org.apache.logging.log4j.Level.isInRange(Level, >> Level). Thanks to Gary Gregory. >> >> o LOG4J2-1106: Add a LevelRangeFilter class. Thanks to Gary Gregory. >> >> o LOG4J2-1076: Added support for system nanosecond time in pattern >> layout. >> >> o LOG4J2-1075: Added support for compressing to bzip2 format on file >> rollover. >> >> o LOG4J2-1077: Support additional Apache Commons Compress compression >> formats on rollover: Deflate, Pack200, XY. >> >> o LOG4J2-767: New module for Liquibase integration. Thanks to Mikael >> St=C3=A5ldal. >> >> o LOG4J2-1023: New RewritePolicy for changing level of a log event. >> Thanks to Mikael St=C3=A5ldal. >> >> o LOG4J2-1015: Add a way to route messages based on the %marker in >> Layout for RoutingAppender. Thanks to Daniel Marcotte. >> >> o LOG4J2-1050: Add a Log4jLookup class to help write log files relative >> to log4j2.xml. Thanks to Adam Retter. >> >> o LOG4J2-1057: Add API >> org.apache.logging.log4j.LogManager.getFormatterLogger(). >> >> o LOG4J2-1066: Expose Log4jContextFactory's ShutdownCallbackRegistry. >> Thanks to Charles Allen. >> >> >> Fixed Bugs: >> >> o LOG4J2-1121: Fixed potential race condition on reconfiguration. >> Introduced ReliabilityStrategy to facilitate >> >> switching between different mechanisms for preventing log events >> from being dropped on reconfiguration. >> >> o LOG4J2-1123: Core Configurator.initialize(String, ClassLoader, String= ) >> fails to work when config location is a file path. Thanks to Gary Gregor= y. >> >> o LOG4J2-1117: OutputStreamManager in ConsoleAppender leaking managers. >> Thanks to Marcus Thiesen. >> >> o LOG4J2-1044: Write pending events to Flume when the appender is >> stopped. >> >> o LOG4J2-1108: NullPointerException when passing null to >> java.util.logging.Logger.setLevel(). Thanks to Mikael St=C3=A5ldal. >> >> o LOG4J2-1110: org.apache.logging.log4j.jul.CoreLogger.setLevel() check= s >> for security permission too late. >> >> o LOG4J2-1084: Misleading StatusLogger WARN event in LogManager with >> java.util.Map. Thanks to Philipp Schneider. >> >> o LOG4J2-1051: NoClassDefFoundError when starting app on Google App >> Engine. Thanks to Lukasz Lenart. >> >> o LOG4J2-684: ExtendedThrowablePatternConverter does not print >> suppressed exceptions. Thanks to Joern Huxhorn, Mauro Molinari. >> >> o LOG4J2-1069: Improper handling of JSON escape chars when deserializin= g >> JSON log events. Thanks to Sam Braam. >> >> o LOG4J2-1068: Exceptions not logged when using TcpSocketServer + >> SerializedLayout. Thanks to Andy McMullan. >> >> o LOG4J2-1067: ThrowableProxy getExtendedStackTraceAsString throws NPE >> on deserialized nested exceptions. Thanks to Sam Braam. >> >> o LOG4J2-1049: AsyncAppender now resets the thread interrupted flag >> after catching InterruptedException. Thanks to Robert Schaft. >> >> o LOG4J2-1048: FileConfigurationMonitor unnecessarily calls >> System.currentTimeMillis() causing high CPU usage. Thanks to Nikhil. >> >> o LOG4J2-1037: Backward compatibility issue in log4j-1.2-api NDC pop() >> and peek(). Thanks to Marc Dergacz. >> >> o LOG4J2-1025: Custom java.util.logging.Level gives null Log4j Level an= d >> causes NPE. Thanks to Mikael St=C3=A5ldal. >> >> o LOG4J2-1033: SimpleLogger creates unnecessary Map objects by calling >> ThreadContext.getContext() instead of getImmutableContext(). Thanks to >> Mikael St=C3=A5ldal. >> >> o LOG4J2-1026: HighlightConverter does not obey noConsoleNoAnsi. >> >> o LOG4J2-1019: ZipCompressAction leaves files open until GC when an IO >> error takes place. >> >> o LOG4J2-1020: GzCompressAction leaves files open until GC when an IO >> error takes place. >> >> o LOG4J2-1038: Incorrect documentation for layout default charset. >> Thanks to Gili. >> >> o LOG4J2-1042: Socket and Syslog appenders don't take timeout into >> account at startup. Thanks to Guillaume Turri. >> >> o LOG4J2-934: Circular suppressed Exception throws StackOverflowError. >> Thanks to Kenneth Gendron. >> >> o LOG4J2-1046: Circular Exception cause throws StackOverflowError. >> Thanks to Kenneth Gendron. >> >> o LOG4J2-982: Use System.nanoTime() to measure time intervals. Thanks t= o >> Mikhail Mazurskiy. >> >> o LOG4J2-1045: Externalize log4j2.xml via URL resource. Thanks to G=C3= =BCnter >> Albrecht. >> >> o LOG4J2-1058: Log4jMarker#contains(String) does not respect >> org.slf4j.Marker contract. Thanks to Daniel Branzea. >> >> o LOG4J2-1060: Log4jMarker#contains(Marker) does not respect >> org.slf4j.Marker contract. >> >> o LOG4J2-1061: Log4jMarker#remove(Marker) does not respect >> org.slf4j.Marker contract. >> >> o LOG4J2-1062: Log4jMarker#add(Marker) does not respect org.slf4j.Marke= r >> contract. >> >> o LOG4J2-1064: org.apache.logging.slf4j.Log4jMarker does not implement >> org.slf4j.Marker.equals(Object) org.slf4j.Marker.hashCode(). >> >> o LOG4J2-889: Header in layout should not be written on application >> startup if appending to an existing file. Fixes LOG4J2-1030. Thanks to >> Maciej Kara=C5=9B, Kenneth Leider. >> >> o LOG4J2-918: Clarify documentation for combining async with sync >> loggers. >> >> o LOG4J2-1078: GelfLayout throws exception if some log event fields are >> null. Thanks to Mikael St=C3=A5ldal. >> >> >> Changes: >> >> o LOG4J2-1017: Update Java platform from Java 6 to 7. From this version >> onwards, log4j 2 requires Java 7. >> >> o LOG4J2-812: PatternLayout timestamp formatting performance >> improvement: replaced synchronized SimpleDateFormat with >> >> Apache Commons FastDateFormat. This and better caching resulted >> in a ~3-30X faster timestamp formatting. >> >> o LOG4J2-1097: PatternLayout timestamp formatting performance >> improvement: predefined date formats (and variants using >> >> a period '.' millisecond separator instead of ',') are now >> formatted ~2-10X faster than other date formats. >> >> o LOG4J2-1096: Improved performance of >> ParameterizedMessage::getFormattedMessage by ~2X. >> >> o LOG4J2-1120: LoggerConfig performance improvements: avoid unnecessary >> lock acquisition, use more efficient data structure. >> >> o LOG4J2-1125: PatternLayout performance improvement by caching and >> reusing a ThreadLocal StringBuilder. >> >> o LOG4J2-1114: Add thread name to status logger layout. >> >> o LOG4J2-1010: Pass log event when interpolating logger properties. >> >> o LOG4J2-1044: Support batchSize in FlumeAvroManager. >> >> o LOG4J2-1065: Define org.apache.logging.log4j.Marker.equals(Object) an= d >> org.apache.logging.log4j.Marker.hashCode(). >> >> o LOG4J2-1063: Avoid creating temporary array object in >> org.apache.logging.slf4j.Log4jMarker.iterator(). >> >> o LOG4J2-890: log4j-web-2.1 should workaround a bug in JBOSS EAP 6.2. >> Thanks to Hassan Kalaldeh, Robert Andersson, Remko Popma. >> >> o LOG4J2-403: MongoDB appender, username and password should be >> optional. Thanks to Poorna Subhash P, Jeremy Lautman. >> >> o LOG4J2-1035: Log4j2 tries to SystemClassLoader when running on Google >> AppEngine. >> >> o LOG4J2-1022: Allow a list of keys to be specified in the MDC pattern >> converter. >> >> o LOG4J2-959: Fix FindBugs DM_DEFAULT_ENCODING bug in >> SimpleLogger.logMessage() and simplify code. >> >> o LOG4J2-1036: Update Apache Flume from 1.5.2 to 1.6.0. >> >> o LOG4J2-1041: Update MongoDB driver from 2.11.2 to 2.13.2. >> >> o LOG4J2-1018: Update database tests from H2 1.3.175 to 1.3.176. >> >> o LOG4J2-1070: Update Java Mail from 1.5.2 to 1.5.4. >> >> o LOG4J2-1079: Update Jackson from 2.5.3 to 2.5.4. >> >> o LOG4J2-1879: Update Jackson from 2.5.4 to 2.6.0. >> >> o LOG4J2-1092: Update Jackson from 2.6.0 to 2.6.1. >> >> o LOG4J2-1104: Update Apache Commons Compress from 1.9 to 1.10. >> >> >> Removed: >> >> o Removed experimental interface LevelLogger which got committed to >> master by mistake. >> >> Tag:https:// >> >> git-wip-us.apache.org/repos/asf?p=3Dlogging-log4j2.git;a=3Dtree;h=3D380e= 13cd7ab965942f1d5cfabd73dd056d728b28;hb=3D383a8194acab4a740d22b69c023ca3af6= cb9c664 >> or >> >> 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.4" >> b) for an existing working copy to =E2=80=9Cgit pull=E2=80=9D and then = =E2=80=9Cgit checkout tags/log4j-2.4=E2=80=9D >> >> Web Site: http://people.apache.org/~rgoers/log4j2/ >> >> Artifacts: https://repository.apache.org/content/repositories/orgapachel= ogging-1015 >> >> You may download all the artifacts by executing: >> >> wget -e robots=3Doff --cut-dirs=3D7 -nH -r -p -np --no-check-certificate= https://repository.apache.org/content/repositories/orgapachelogging-1015/o= rg/apache/logging/log4j/ >> >> Ralph >> >> >> >> >> >> > > --=20 E-Mail: garydgregory@gmail.com | ggregory@apache.org Java Persistence with Hibernate, Second Edition JUnit in Action, Second Edition Spring Batch in Action Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory --001a11c3d3e2d9224405205d94db Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Is=C2=A0LOG4J2-1127 worth another RC?

G= ary

On= Mon, Sep 21, 2015 at 8:32 PM, Remko Popma <remko.popma@gmail.com&= gt; wrote:
(Including PMC in recip= ients)


+1

I see many issues with the site (details bel= ow), but AFAICS no showstoppers - unless we consider=C2=A0dependency-conver= gence mandatory?
I also found a bug in=C2=A0CsvLogEventLayout: Na= noTime will always be zero (need to set NanoClockFactory mode - details bel= ow).

----
(Notation: "-": curr= ent problematic text to be replaced, "+": replacement text)
=
----

changelog.html (outdated/wrong)
=
-Configuration via property files is not supported.
+C= onfiguration via property files is supported from version 2.4, but is not c= ompatible with Log4j 1.x.

changes.xml (improv= ement)
-LOG4J2-952: Add ConfigurationBuilder.
+LOG4J2-9= 52: Add ConfigurationBuilder for programmatic configuration.

=
faq.html (outdated, duplicate)
* Under "How= do I configure log4j2 in code without a configuration file?"
-You could use the static method #initialize(String contextName, ClassLoa= der loader, String configLocation) (see source code) in org.apache.logging.= log4j.core.config.Configurator. (You can pass null for the class loader.) B= e aware that this class is not part of the public API so your code may brea= k with any minor release.
+From 2.4, Log4j 2 provides an [API for= programmatic configuration|manual/customconfig.html]. The new Configuratio= nBuilder API allows you to create Configurations in code by constructing co= mponent _definitions_ without requiring you to know about the internals of = actual configuration objects like Loggers and Appenders.

* Merge these answers into a single Q&A entry:
"H= ow do I change a logger's level in code?" and=C2=A0
&quo= t;How do I set a logger's level programmatically?"

<= /div>
* Version
-the log4j-api-2.1 and the log4j-core-2.1 jar= files
+the log4j-api-2.4 and the log4j-core-2.4 jar files
<= div>

manual/appenders.html (site errors and am= biguities)
* Kafka Appender is missing from the left nav-bar in A= ppenders

-The KafkaAppender log events=C2=A0
=
+The KafkaAppender logs events=C2=A0

-lilter = (Parameter Name)
+filter

-If you do not = specify a layout, if not specified the formatted message as an UTF-8 encode= d string will be sent to Kafka.
+If you do not specify a layout, = the formatted message will be sent to Kafka as an UTF-8 encoded string.

-This appender requires Kafka client library
+This appender requires Kafka client library. (add period at end)


ZeroMQ appender:=C2=A0
* Section= title and left nav-bar title should be "JeroMQ". (and section wi= ll need to move to keep alphabetic order)
* Is a layout required?= What layout is used if nothing is specified?

-The= name of the Appender.
+The name of the Appender. Required.
=

(Parameter Name)
-Layout
+layout (l= ower case)

-Filters
+filters (lower case= ); other appenders use singular "filter" without trailing 's&= #39;, but the code for JeroMQ says @PluginElement("Filters") Filt= er filter

-Property, Type=3DProperty
+pr= operties (lower case, plural), Type=3DProperty[] - to be consistent with do= cs for PropertiesRewritePolicy in RewriteAppender

=
manual/layouts.html (CsvLogEventLayout bug, site errors)
* CSV Layout is missing from the left nav-bar in Layouts
*= CSV Layout section should mention dependency on Apache Commons CSV. (See J= SONLayout on same page.)
* Bug: CsvLogEventLayout generates NanoT= ime timestamps but these are always zero.
=C2=A0 To fix this, add= the below code to the CsvLogEventLayout constructor:
=C2=A0 =C2= =A0 =C2=A0 // LOG4J2-1074 Switch to actual clock if nanosecond timestamps a= re required in config.
=C2=A0 =C2=A0 =C2=A0 // LoggerContext will= notify known NanoClockFactory users that the configuration has changed.
=C2=A0 =C2=A0 =C2=A0 NanoClockFactory.setMode(NanoClockFactory.Mode= .System);

* GELF Layout should be before HTML Layo= ut in body text and in left nav-bar (alphabetical order)
* HTML L= ayout should be before JSON Layout in body text (alphabetical order - the n= av-bar order is correct)
* (Under Location Information)
-%C or $class - this is rende= red as "%C or class java.lang.Object"
+%= C or %class


manual/customconfig.htm= l (improvements)
* Side-nav menu title "Extending Log4j Conf= iguration" should be "Programmatic Log4j Configuration"
* Title "Custom Configurations" -> "Programmatic Co= nfiguration"


log4j-api/depende= ncy-convergence.html
Error: You do not have 100 % convergence. - = is this a showstopper?

log4j-api/clirr-report.html=
77 Clirr errors - I believe these are all expected and can be ig= nored.

log4j-api/checkstyle.html
122 che= ckstyle errors - not showstoppers

log4j-core/index= .html
* Missing dependency information for JeroMQ/ZeroMQ Appender= on JeroMQ library
* Missing dependency information for CSV layou= ts on Apache Commons CSV

log4j-core/dependency-con= vergence.html
Error: You do not have 100 % convergence. - Is this= a showstopper?

log4j-core/checkstyle.html
1652 checkstyle errors - not showstoppers


<= /div>
log4j-liquibase/index.html
-due the the plugin auto dis= covery
-due to the plugin auto discovery

log4j-liquibase/dependency-convergence.html
Error: You do not ha= ve 100 % convergence. - Is this a showstopper?



On Mon, Sep 21, 2015 at 11:04 AM, Ralph Goers <ralph.goers@dslextreme.com> wrote:
This is a vo= te to release Log4j 2.4, the next version of the Log4j 2 project.

Please download, test, and cast you= r votes on the log4j developers list.
[] +1, release the artifact= s
[] -1, don't release because...

Th= e vote=C2=A0will remain open for 72 hours (or more if required). All votes= =C2=A0are welcome, but only Logging PMC votes=C2=A0are =E2=80=9Cofficially= =E2=80=9D counted. As always, at least 3 +1 votes and more positive than ne= gative votes are required.

Changes in this version include:


New features:

o LOG4J2-635:=C2=A0 Add support for configuration v= ia Properties.

o LOG4J2-952:=C2=A0 Add ConfigurationBuilder.

o LOG4J2-599:=C2=A0 Added support for Java 8 lambda= expressions to lazily construct a log message only if

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th= e requested log level is enabled.

o LOG4J2-1118:=C2=A0 Updated Logger wrapper generat= or tool to add Java 8 lambda support for custom log levels.

o LOG4J2-1107:=C2=A0 New Appender for Apache Kafka.= Thanks to Mikael St=C3=A5ldal.

o LOG4J2-1113:=C2=A0 New publisher Appender for Zer= oMQ (using JeroMQ). Thanks to Gary Gregory.

o LOG4J2-1088:=C2=A0 Add Comma Separated Value (CSV= ) layouts for parameter and event logging. Thanks to Gary Gregory.

o LOG4J2-1090:=C2=A0 Add Core Configurator APIs to = change a logger's level.

o LOG4J2-1105:=C2=A0 Add API org.apache.logging.log= 4j.Level.isInRange(Level, Level). Thanks to Gary Gregory.

o LOG4J2-1106:=C2=A0 Add a LevelRangeFilter class. = Thanks to Gary Gregory.

o LOG4J2-1076:=C2=A0 Added support for system nanos= econd time in pattern layout.

o LOG4J2-1075:=C2=A0 Added support for compressing = to bzip2 format on file rollover.

o LOG4J2-1077:=C2=A0 Support additional Apache Comm= ons Compress compression formats on rollover: Deflate, Pack200, XY.

o LOG4J2-767:=C2=A0 New module for Liquibase integr= ation. Thanks to Mikael St=C3=A5ldal.

o LOG4J2-1023:=C2=A0 New RewritePolicy for changing= level of a log event. Thanks to Mikael St=C3=A5ldal.

o LOG4J2-1015:=C2=A0 Add a way to route messages ba= sed on the %marker in Layout for RoutingAppender. Thanks to Daniel Marcotte= .

o LOG4J2-1050:=C2=A0 Add a Log4jLookup class to hel= p write log files relative to log4j2.xml. Thanks to Adam Retter.

o LOG4J2-1057:=C2=A0 Add API org.apache.logging.log= 4j.LogManager.getFormatterLogger().

o LOG4J2-1066:=C2=A0 Expose Log4jContextFactory'= ;s ShutdownCallbackRegistry. Thanks to Charles Allen.


Fixed Bugs:

o LOG4J2-1121:=C2=A0 Fixed potential race condition= on reconfiguration. Introduced ReliabilityStrategy to facilitate

=C2=A0 =C2=A0 =C2=A0 =C2=A0 switching between diffe= rent mechanisms for preventing log events from being dropped on reconfigura= tion.

o LOG4J2-1123:=C2=A0 Core Configurator.initialize(S= tring, ClassLoader, String) fails to work when config location is a file pa= th. Thanks to Gary Gregory.

o LOG4J2-1117:=C2=A0 OutputStreamManager in Console= Appender leaking managers. Thanks to Marcus Thiesen.

o LOG4J2-1044:=C2=A0 Write pending events to Flume = when the appender is stopped.

o LOG4J2-1108:=C2=A0 NullPointerException when pass= ing null to java.util.logging.Logger.setLevel(). Thanks to Mikael St=C3=A5l= dal.

o LOG4J2-1110:=C2=A0 org.apache.logging.log4j.jul.C= oreLogger.setLevel() checks for security permission too late.

o LOG4J2-1084:=C2=A0 Misleading StatusLogger WARN e= vent in LogManager with java.util.Map. Thanks to Philipp Schneider.

o LOG4J2-1051:=C2=A0 NoClassDefFoundError when star= ting app on Google App Engine. Thanks to Lukasz Lenart.

o LOG4J2-684:=C2=A0 ExtendedThrowablePatternConvert= er does not print suppressed exceptions. Thanks to Joern Huxhorn, Mauro Mol= inari.

o LOG4J2-1069:=C2=A0 Improper handling of JSON esca= pe chars when deserializing JSON log events. Thanks to Sam Braam.

o LOG4J2-1068:=C2=A0 Exceptions not logged when usi= ng TcpSocketServer + SerializedLayout. Thanks to Andy McMullan.

o LOG4J2-1067:=C2=A0 ThrowableProxy getExtendedStac= kTraceAsString throws NPE on deserialized nested exceptions. Thanks to Sam = Braam.

o LOG4J2-1049:=C2=A0 AsyncAppender now resets the t= hread interrupted flag after catching InterruptedException. Thanks to Rober= t Schaft.

o LOG4J2-1048:=C2=A0 FileConfigurationMonitor unnec= essarily calls System.currentTimeMillis() causing high CPU usage. Thanks to= Nikhil.

o LOG4J2-1037:=C2=A0 Backward compatibility issue i= n log4j-1.2-api NDC pop() and peek(). Thanks to Marc Dergacz.

o LOG4J2-1025:=C2=A0 Custom java.util.logging.Level= gives null Log4j Level and causes NPE. Thanks to Mikael St=C3=A5ldal.

o LOG4J2-1033:=C2=A0 SimpleLogger creates unnecessa= ry Map objects by calling ThreadContext.getContext() instead of getImmutabl= eContext(). Thanks to Mikael St=C3=A5ldal.

o LOG4J2-1026:=C2=A0 HighlightConverter does not ob= ey noConsoleNoAnsi.

o LOG4J2-1019:=C2=A0 ZipCompressAction leaves files= open until GC when an IO error takes place.

o LOG4J2-1020:=C2=A0 GzCompressAction leaves files = open until GC when an IO error takes place.

o LOG4J2-1038:=C2=A0 Incorrect documentation for la= yout default charset. Thanks to Gili.

o LOG4J2-1042:=C2=A0 Socket and Syslog appenders do= n't take timeout into account at startup. Thanks to Guillaume Turri.

o LOG4J2-934:=C2=A0 Circular suppressed Exception t= hrows StackOverflowError. Thanks to Kenneth Gendron.

o LOG4J2-1046:=C2=A0 Circular Exception cause throw= s StackOverflowError. Thanks to Kenneth Gendron.

o LOG4J2-982:=C2=A0 Use System.nanoTime() to measur= e time intervals. Thanks to Mikhail Mazurskiy.

o LOG4J2-1045:=C2=A0 Externalize log4j2.xml via URL= resource. Thanks to G=C3=BCnter Albrecht.

o LOG4J2-1058:=C2=A0 Log4jMarker#contains(String) d= oes not respect org.slf4j.Marker contract. Thanks to Daniel Branzea.

o LOG4J2-1060:=C2=A0 Log4jMarker#contains(Marker) d= oes not respect org.slf4j.Marker contract.

o LOG4J2-1061:=C2=A0 Log4jMarker#remove(Marker) doe= s not respect org.slf4j.Marker contract.

o LOG4J2-1062:=C2=A0 Log4jMarker#add(Marker) does n= ot respect org.slf4j.Marker contract.

o LOG4J2-1064:=C2=A0 org.apache.logging.slf4j.Log4j= Marker does not implement org.slf4j.Marker.equals(Object) org.slf4j.Marker.= hashCode().

o LOG4J2-889:=C2=A0 Header in layout should not be = written on application startup if appending to an existing file. Fixes LOG4= J2-1030. Thanks to Maciej Kara=C5=9B, Kenneth Leider.

o LOG4J2-918:=C2=A0 Clarify documentation for combi= ning async with sync loggers.

o LOG4J2-1078:=C2=A0 GelfLayout throws exception if= some log event fields are null. Thanks to Mikael St=C3=A5ldal.


Changes:

o LOG4J2-1017:=C2=A0 Update Java platform from Java= 6 to 7. From this version onwards, log4j 2 requires Java 7.

o LOG4J2-812:=C2=A0 PatternLayout timestamp formatt= ing performance improvement: replaced synchronized SimpleDateFormat with

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Apache Commons FastDate= Format. This and better caching resulted in a ~3-30X faster timestamp forma= tting.

o LOG4J2-1097:=C2=A0 PatternLayout timestamp format= ting performance improvement: predefined date formats (and variants using

=C2=A0 =C2=A0 =C2=A0 =C2=A0 a period '.' mi= llisecond separator instead of ',') are now formatted ~2-10X faster= than other date formats.

o LOG4J2-1096:=C2=A0 Improved performance of Parame= terizedMessage::getFormattedMessage by ~2X.

o LOG4J2-1120:=C2=A0 LoggerConfig performance impro= vements: avoid unnecessary lock acquisition, use more efficient data struct= ure.

o LOG4J2-1125:=C2=A0 PatternLayout performance impr= ovement by caching and reusing a ThreadLocal StringBuilder.

o LOG4J2-1114:=C2=A0 Add thread name to status logg= er layout.

o LOG4J2-1010:=C2=A0 Pass log event when interpolat= ing logger properties.

o LOG4J2-1044:=C2=A0 Support batchSize in FlumeAvro= Manager.

o LOG4J2-1065:=C2=A0 Define org.apache.logging.log4= j.Marker.equals(Object) and org.apache.logging.log4j.Marker.hashCode().

o LOG4J2-1063:=C2=A0 Avoid creating temporary array= object in org.apache.logging.slf4j.Log4jMarker.iterator().

o LOG4J2-890:=C2=A0 log4j-web-2.1 should workaround= a bug in JBOSS EAP 6.2. Thanks to Hassan Kalaldeh, Robert Andersson, Remko= Popma.

o LOG4J2-403:=C2=A0 MongoDB appender, username and = password should be optional. Thanks to Poorna Subhash P, Jeremy Lautman.

o LOG4J2-1035:=C2=A0 Log4j2 tries to SystemClassLoa= der when running on Google AppEngine.

o LOG4J2-1022:=C2=A0 Allow a list of keys to be spe= cified in the MDC pattern converter.

o LOG4J2-959:=C2=A0 Fix FindBugs DM_DEFAULT_ENCODIN= G bug in SimpleLogger.logMessage() and simplify code.

o LOG4J2-1036:=C2=A0 Update Apache Flume from 1.5.2= to 1.6.0.

o LOG4J2-1041:=C2=A0 Update MongoDB driver from 2.1= 1.2 to 2.13.2.

o LOG4J2-1018:=C2=A0 Update database tests from H2 = 1.3.175 to 1.3.176.

o LOG4J2-1070:=C2=A0 Update Java Mail from 1.5.2 to= 1.5.4.

o LOG4J2-1079:=C2=A0 Update Jackson from 2.5.3 to 2= .5.4.

o LOG4J2-1879:=C2=A0 Update Jackson from 2.5.4 to 2= .6.0.

o LOG4J2-1092:=C2=A0 Update Jackson from 2.6.0 to 2= .6.1.

o LOG4J2-1104:=C2=A0 Update Apache Commons Compress= from 1.9 to 1.10.


Removed:

o Removed experimental interface LevelLogger which = got committed to master by mistake.


a) =C2=A0for a new copy do "git clone https://git-wip-us.apache.org/repos/as= f/logging-log4j2.git"=C2=A0and then "git = checkout tags/log4j-2.4"
b) for an existing working cop= y to=C2=A0=E2=80=9Cgit pull=E2=80=9D and then=C2=A0=E2=80=9Cgit checkout ta= gs/log4j-2.4=E2=80=9D

=

<= /div>

You may download all = the artifacts by executing:
<= p>

wget -e robots=3Doff --cut-dirs=3D7 -nH -= r -p -np --no-check-certificate=C2=A0https://repository.apache.org/content/repositories/orgapach= elogging-1015/org/apache/logging/log4j/

Ralph










--
= --001a11c3d3e2d9224405205d94db--