Looks like this lost itself outside the list. Anyways, I've updated the template to generate markdown which makes a nice compromise between HTML and plain text. The output on GitHub is copyable into an email, for instance.
On 27 January 2017 at 19:33, Matt Sicker <mattsic...@apache.org> wrote: > It's just a velocity template: > > https://github.com/apache/logging-log4j2/blob/master/ > src/changes/announcement.vm > > Shouldn't be too hard to adapt to HTML. > > On 27 January 2017 at 16:53, Gary Gregory <ggreg...@rocketsoftware.com> > wrote: > >> We need a gadget that generates this in HTML. That would make the blog >> and emails like this easier to digest. I wonder if there is a maven >> thingy... >> >> Gary >> >> ------------------------------ >> *From:* Matt Sicker <mattsic...@apache.org> >> *Sent:* Friday, January 27, 2017 8:19:48 AM >> *To:* annou...@apache.org >> *Subject:* [ANN] Log4j 2.8 released >> >> >> The Apache Log4j 2 team is pleased to announce the Log4j 2.8 release! >> >> Apache Log4j is a well known framework for logging application behavior. >> Log4j 2 is an upgrade >> to Log4j that provides significant improvements over its predecessor, Log4j >> 1.x, and provides >> many other modern features such as support for Markers, lambda expressions >> for lazy logging, >> property substitution using Lookups, multiple patterns on a PatternLayout >> and asynchronous >> Loggers. Another notable Log4j 2 feature is the ability to be "garbage-free" >> (avoid allocating >> temporary objects) while logging. In addition, Log4j 2 will not lose events >> while reconfiguring. >> >> This release contains several bugfixes and new features. The new features >> include the ability >> to have the RollingFileAppender log directly to the archive files. More >> details on the new features and >> fixes are itemized below. >> >> Note that subsequent to the 2.6 release a minor source incompatibility was >> found due to the >> addition of new methods to the Logger interface. If you have code that does: >> >> logger.error(null, “This is the log message”, throwable); >> >> or similar with any log level you will get a compiler error saying the >> reference is ambiguous. >> To correct this either do: >> >> logger.error(“This is the log message”, throwable); >> >> or >> >> logger.error((Marker) null, “This is the log message”, throwable); >> >> The Log4j 2.8 API, as well as many core components, maintains binary >> compatibility with previous releases. >> >> GA Release 2.8 >> >> Changes in this version include: >> >> New features: >> o LOG4J2-1032: Make DefaultRolloverStrategy more efficent when renaming >> files. Add nomax option to the fileIndex attribute. >> o LOG4J2-1101: RollingFileAppender now supports omitting the file name and >> writing directly to the archive files. >> o LOG4J2-1243: Allow default value in property to be a Lookup. >> o LOG4J2-1787: Document how to exclude transitive conflicting dependencies >> in Maven and Gradle. >> o LOG4J2-1773: Add StatusLoggerRule to allow unit tests to set a status >> level. >> o LOG4J2-424: Add non-string data type support to JdbcAppender via new >> ColumnMapping plugin. >> o LOG4J2-1771: Add a Builder to ColumnConfig and deprecate >> ColumnConfig.createColumnConfig(). >> o LOG4J2-1770: Add a Builder to JdbcAppender and deprecate >> JdbcAppender.createAppender(). >> o LOG4J2-1764: Use MethodHandle in ContextDataFactory cached constructor. >> o LOG4J2-1730: Add Apache Cassandra appender and ColumnMapping plugin. >> o LOG4J2-1759: Add TypeConverter for java.util.UUID. >> o LOG4J2-1758: Add TypeConverter for java.nio.file.Path. >> o LOG4J2-1755: Add TypeConverter and constraint validators for >> java.net.InetAddress and port numbers. >> o LOG4J2-969: Refactor SyslogAppender so that Layout is a Plugin element. >> o LOG4J2-1660: Added public method ThreadContext::getThreadContextMap; >> removed class ThreadContextAccess. >> o LOG4J2-1379: Add documentation regarding YAML configuration format. >> o LOG4J2-1718: Introduce marker interface AsynchronouslyFormattable. >> o LOG4J2-1681: Introduce interfaces IndexedStringMap and >> IndexedReadOnlyStringMap, supporting garbage-free iteration over sorted map. >> o LOG4J2-1695: Add a Builder to ScriptPatternSelector and deprecate >> ScriptPatternSelector.createSelector(). >> o LOG4J2-1696: Add a Builder to MarkerPatternSelector and deprecate >> MarkerPatternSelector.createSelector(). >> o LOG4J2-1697: Add a SerializerBuilder to PatternLayout and deprecate >> PatternLayout.createSerializer(). >> o LOG4J2-1701: Add a Builder to RandomAccessFileAppender and deprecate >> RandomAccessFileAppender.createAppender(). >> o LOG4J2-1703: Add a Builder to MemoryMappedFileAppender and deprecate >> MemoryMappedFileAppender.createAppender(). >> o LOG4J2-1704: Add a Builder to RollingRandomAccessFileAppender and >> deprecate RollingRandomAccessFileAppender.createAppender(). >> o LOG4J2-1709: Add a Builder to SyslogAppender and deprecate >> SyslogAppender.createAppender(). >> o LOG4J2-1707: Allow TCP Socket Appender to set socket options. >> o LOG4J2-1708: Allow Secure Socket Appender to set socket options. >> o LOG4J2-1737: Add a Builder to SyslogLayout and deprecate >> SyslogLayout.createLayout(Facility, boolean, String, Charset). >> o LOG4J2-1738: Add a Builder to JsonLayout and deprecate >> org.apache.logging.log4j.core.layout.JsonLayout.createLayout(Configuration, >> boolean, boolean, boolean, boolean, boolean, boolean, String, String, >> Charset, boolean). >> o LOG4J2-1739: Add Builder to KafkaAppender and deprecate >> KafkaAppender.createAppender(Layout, Filter, String, boolean, String, >> Property[], Configuration). >> o LOG4J2-1733: Add SyncSend attribute to KafkaAppender (as in >> KafkaLog4jAppender). Thanks to Vincent Tieleman. >> >> Fixed Bugs: >> o LOG4J2-1780: Eliminate the use of the ExecutorServices in the >> LoggerContext. >> o LOG4J2-1786: ConfigurationScheduler now preserves interrupt flag during >> stop. >> o LOG4J2-1779: Fixed bug where AsyncLogger did not resolve configuration >> properties. >> o LOG4J2-1769: Fixed concurrency issue affecting all layouts except >> PatternLayout and GelfLayout, which caused scrambled output and exceptions >> when logging synchronously from multiple threads. Thanks to Brandon Goodin. >> o LOG4J2-1724: Using variables in GelfLayout's additional fields at >> runtime. Thanks to Alexander Krasnostavsky. >> o LOG4J2-1762: Add Builder to GelfLayout. >> o LOG4J2-1649: Insure the ConfigurationScheduler shuts down without >> blocking. Thanks to Georg Friedrich. >> o LOG4J2-1653: CronTriggeringPolicy would use the wrong date/time when >> rolling over and create multiple triggering policies on reconfiguration. >> Thanks to Georg Friedrich. >> o LOG4J2-1748: Do not use non-daemon thread pool for rollover tasks. >> o LOG4J2-1628: Fixed file locking regression in FileAppender introduced in >> 2.6. >> o LOG4J2-1744: The custom logger Generate tool no longer requires the >> log4j-api module on the classpath. >> o LOG4J2-1731: SslSocketManager now respects connectTimeoutMillis. Thanks >> to Chris Ribble. >> o LOG4J2-1682: Logger using LocalizedMessageFactory prints key instead of >> message. Thanks to Markus Waidhofer. >> o LOG4J2-1720: Make GelfLayout independent of Jackson. >> o LOG4J2-1719: Fixed race condition in ObjectMessage and SimpleMessage, >> ensuring that the log message contains the value the object has during the >> logging call. >> o LOG4J2-1688: Fixed bug where elements of a log message parameter array >> were nulled out in garbage-free mode. >> o LOG4J2-1692: Add putAll() method to CloseableThreadContext. Thanks to >> Greg Thomas. >> o LOG4J2-1689: Add CleanableThreadContextMap interface supporting method >> removeAll(Iterable<String>). >> o LOG4J2-1685: Option 'disableAnsi' in PatternLayout to unconditionally >> disable ANSI escape codes. Thanks to Raman Gupta. >> o LOG4J2-1706: Make TimeFilter usable as global filter and as logger filter. >> o LOG4J2-1722: (GC) Avoid allocating temporary objects in >> VariablesNotEmptyReplacementConverter. >> o LOG4J2-1717: (GC) Avoid allocating temporary objects in >> EncodingPatternConverter. >> o LOG4J2-1716: (GC) Avoid allocating temporary objects in >> MapPatternConverter. (Note that constructing a MapMessage is not >> garbage-free.) >> o LOG4J2-1683: (GC) Avoid allocating temporary objects in MapMessage. >> o LOG4J2-1715: (GC) Avoid allocating temporary objects in >> NdcPatternConverter. (Note that use of the ThreadContext stack is not >> garbage-free.) >> o LOG4J2-1714: (GC) Avoid allocating temporary objects in >> AbstractStyleNameConverter. >> o LOG4J2-1680: (GC) Avoid allocating temporary objects in TimeFilter. >> o LOG4J2-1679: (GC) Avoid allocating temporary objects in >> StructuredDataFilter. >> o LOG4J2-1678: (GC) Avoid allocating temporary objects in >> ThreadContextMapFilter. >> o LOG4J2-1677: (GC) Avoid allocating temporary objects in MapFilter. >> o LOG4J2-1674: (GC) Avoid allocating temporary objects in ThresholdFilter. >> o LOG4J2-1673: (GC) Avoid allocating temporary objects in MarkerFilter. >> o LOG4J2-1672: (GC) Avoid allocating temporary objects in LevelRangeFilter. >> o LOG4J2-1671: (GC) Avoid allocating temporary objects in >> EqualsIgnoreCaseReplacementConverter. >> o LOG4J2-1670: (GC) Avoid allocating temporary objects in >> EqualsReplacementConverter. >> o LOG4J2-1669: (GC) Avoid allocating temporary objects in >> MaxLengthConverter. >> o LOG4J2-1668: (GC) Avoid allocating temporary objects in >> MarkerPatternConverter. >> o LOG4J2-1667: (GC) Avoid allocating temporary objects in >> SequenceNumberPatternConverter. >> o LOG4J2-1666: (GC) Avoid allocating temporary objects in >> RelativeTimePatternConverter. >> o LOG4J2-1665: (GC) Avoid allocating temporary objects in >> IntegerPatternConverter. >> o LOG4J2-1637: Fixed problems when used in OSGi containers >> (IllegalAccessError, NoClassDefFoundError). >> o LOG4J2-1226: Improve LogEvent serialization to handle non-serializable >> Messages and deserializing when required classes are missing. >> o LOG4J2-1663: Ensure SortedArrayStringMap can be serialized and >> deserialized without errors regardless of content. >> o LOG4J2-1658: Prevent NPE in >> ThreadContextMapFactory::createThreadContextMap when initializing Log4j with >> Configurator::initialize and the BasicContextSelector is used. >> o LOG4J2-1645: Immutable empty StringMap. >> o LOG4J2-1623: Configurable JVM shutdown hook timeout. >> o LOG4J2-1712: Pick up bug fixes from Apache Commons Lang's >> org.apache.commons.lang3.time package. >> o LOG4J2-1636: Console Appender does not pick up Oracle Java 8's >> sun.stdout.encoding and sun.stderr.encoding. Thanks to Eldar Gabdullin. >> o LOG4J2-1639: Fix MemoryMappedFileAppender.createAppender() Javadoc for >> immediateFlush. Thanks to Sridhar Gopinath. >> o LOG4J2-1676: Some LogEvents may not carry a Throwable (Use >> Message.getThrowable() in log(Message) methods.) Thanks to Joern Huxhorn. >> o LOG4J2-1723: Unwanted transitive dependency on geronimo-jms_1.1_spec >> causes OSGi tests to fail. Thanks to Ludovic HOCHET. >> o LOG4J2-1664: Improve OSGi unit tests. Thanks to Ludovic HOCHET. >> o LOG4J2-1687: NPE in ThrowableProxy when resolving stack in Java EE/OSGi >> environment. Thanks to Robert Christiansen. >> o LOG4J2-1642: DefaultShutdownCallbackRegistry can throw a >> NoClassDefFoundError. Thanks to Johno Crawford. >> o LOG4J2-1474: CronTriggeringPolicy raise exception and fail to rollover >> log file when evaluateOnStartup is true. Thanks to yin mingjun, Neon. >> o LOG4J2-1734: SslSocketManagerFactory might leak Sockets when certain >> startup errors occur. >> o LOG4J2-1736: TcpSocketManagerFactory might leak Sockets when certain >> startup errors occur. >> o LOG4J2-1740: Add CronTriggeringPolicy programmatically leads to NPE. >> o LOG4J2-1743: CompositeConfiguration does not add filters to appenderRefs. >> Thanks to Toby Shepheard. >> o LOG4J2-1756: Adds xmlns in schema and some other tags. Thanks to >> shubhankar1100. >> >> Changes: >> o LOG4J2-1781: Update Conversant Disruptor from 1.2.7 to 1.2.10 >> o LOG4J2-1774: Replace MockEJB dependency in unit tests with Spring Test >> and Mockito. >> o LOG4J2-1644: Inefficient locking in AbstractLoggerAdapter. Thanks to Tim >> Gokcen, Pavel Sivolobtchik. >> o LOG4J2-1641: Update JeroMQ from 0.3.5 to 0.3.6. >> o LOG4J2-1647: Update Commons Lang from 3.4 to 3.5. >> o LOG4J2-1646: Migrate to Mockito 2.x in unit tests. >> o LOG4J2-1655: Update Jackson from 2.8.3 to 2.8.4. >> o LOG4J2-1735: Update Jackson from 2.8.4 to 2.8.5. >> o LOG4J2-1656: Update Apache Flume from 1.6.0 to 1.7.0. >> o LOG4J2-1698: Update LMAX Disruptor from 3.3.5 to 3.3.6. >> o LOG4J2-1700: Update Jansi from 1.13 to 1.14. >> o LOG4J2-1750: Update Kafka from 0.10.0.1 to 0.10.1.1. >> o LOG4J2-1751: Update liquibase-core from 3.5.1 to 3.5.3. >> o LOG4J2-1302: The log4j-slf4j-impl module now declares a runtime >> dependency on log4j-core. While not technically required, this makes the >> log4j-slf4j-impl module behave similarly to slf4j-log4j12, and facilitates >> migration to Log4j 2. >> >> >> Apache Log4j 2.8 requires a minimum of Java 7 to build and run. Log4j 2.3 >> was the >> last release that supported Java 6. >> >> Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api >> component, however it >> does not implement some of the very implementation specific classes and >> methods. The package >> names and Maven groupId have been changed to org.apache.logging.log4j to >> avoid any conflicts >> with log4j 1.x. >> >> For complete information on Apache Log4j 2, including instructions on how to >> submit bug >> reports, patches, or suggestions for improvement, see the Apache Apache >> Log4j 2 website: >> https://logging.apache.org/log4j/2.x/ >> >> ================================ >> Rocket Software, Inc. and subsidiaries ■ 77 Fourth Avenue, Waltham MA >> 02451 ■ +1 877.328.2932 <(877)%20328-2932> ■ +1 781.577.4321 >> <(781)%20577-4321> >> Unsubscribe from Marketing Messages/Manage Your Subscription Preferences >> - http://www.rocketsoftware.com/manage-your-email-preferences >> Privacy Policy - http://www.rocketsoftware.com/ >> company/legal/privacy-policy >> ================================ >> >> This communication and any attachments may contain confidential >> information of Rocket Software, Inc. All unauthorized use, disclosure or >> distribution is prohibited. If you are not the intended recipient, please >> notify Rocket Software immediately and destroy all copies of this >> communication. Thank you. >> > >