Better! <div>-------- Original message --------</div><div>From: Matt Sicker <[email protected]> </div><div>Date:05/26/2014 15:27 (GMT-05:00) </div><div>To: Log4J Developers List <[email protected]> </div><div>Subject: Re: svn commit: r1597494 - in /logging/log4j/log4j2/trunk: log4j-1.2-api/src/test/java/org/apache/log4j/ log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ log4j-core/src/main/java/org/apache/logging/log4j/core/config/ log4j-core/src/... </div><div> </div>Hmm, good point. I forgot that using "custom()" in HttpClient was inside Builder classes themselves. How about something like "newBuilder()"?
On 26 May 2014 08:59, Gary Gregory <[email protected]> wrote: I do not like "custom()" as an API, because it is not what the method is doing, it is creating a new object, which is why "create()" or "newInstance()" is better, IMO. Also "create" is a verb which works nicely for a one word method or a prefix, unlike "custom". Gary On Sun, May 25, 2014 at 8:28 PM, Matt Sicker <[email protected]> wrote: I'll note that this builder style is very common in HttpComponents (including the use of custom() as a method to create the builder). ---------- Forwarded message ---------- From: <[email protected]> Date: 25 May 2014 19:23 Subject: svn commit: r1597494 - in /logging/log4j/log4j2/trunk: log4j-1.2-api/src/test/java/org/apache/log4j/ log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ log4j-core/src/main/java/org/apache/logging/log4j/core/config/ log4j-core/src/... To: [email protected] Author: mattsicker Date: Mon May 26 00:23:30 2014 New Revision: 1597494 URL: http://svn.apache.org/r1597494 Log: Migrate PatternLayout to use Builder class. - Replaced usages of createCustomLayout() with custom()...build() chains. - Updated DefaultConfiguration to use the builder without causing an infinite recursion loop. - Fall back to a new DefaultConfiguration() in case no Configuration is specified in builder (can help prevent NPEs where config is assumed non-null). - Noted where code is duplicated between DefaultConfiguration and AbstractConfiguration. - Deleted the createCustomLayout() methods from PatternLayout. Modified: logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueTest.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicTest.java logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java Modified: logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java (original) +++ logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java Mon May 26 00:23:30 2014 @@ -161,7 +161,7 @@ public class CategoryTest { @Test public void testClassName() { final Category category = Category.getInstance("TestCategory"); - final Layout<String> layout = PatternLayout.createCustomLayout("%d %p %C{1.} [%t] %m%n"); + final Layout<String> layout = PatternLayout.custom().withPattern("%d %p %C{1.} [%t] %m%n").build(); final ListAppender appender = new ListAppender("List2", null, layout, false, false); appender.start(); category.setAdditivity(false); Modified: logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java (original) +++ logging/log4j/log4j2/trunk/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java Mon May 26 00:23:30 2014 @@ -456,7 +456,7 @@ public class LoggerTest { @Test @SuppressWarnings("deprecation") public void testLog() { - final PatternLayout layout = PatternLayout.createCustomLayout("%d %C %L %m"); + final PatternLayout layout = PatternLayout.custom().withPattern("%d %C %L %m").build(); final ListAppender appender = new ListAppender("List", null, layout, false, false); appender.start(); final Logger root = Logger.getRootLogger(); Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java Mon May 26 00:23:30 2014 @@ -129,10 +129,13 @@ public final class ColumnConfig { return new ColumnConfig(name, null, literalValue, false, false, false); } if (isPattern) { - return new ColumnConfig( - name, PatternLayout.createLayout(pattern, config, null, null, false, false, null, null), null, - false, isUnicode, isClob - ); + final PatternLayout layout = + PatternLayout.custom() + .withPattern(pattern) + .withConfiguration(config) + .withAlwaysWriteExceptions(false) + .build(); + return new ColumnConfig(name, layout, null, false, isUnicode, isClob); } LOGGER.error("To configure a column you must specify a pattern or literal or set isEventDate to true."); Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java Mon May 26 00:23:30 2014 @@ -166,7 +166,7 @@ public abstract class AbstractConfigurat public void stop() { this.setStopping(); LOGGER.trace("AbstractConfiguration stopping..."); - + // LOG4J2-392 first stop AsyncLogger Disruptor thread final LoggerContextFactory factory = LogManager.getFactory(); if (factory instanceof Log4jContextFactory) { @@ -376,9 +376,12 @@ public abstract class AbstractConfigurat } private void setToDefault() { + // TODO: reduce duplication between this method and DefaultConfiguration constructor setName(DefaultConfiguration.DEFAULT_NAME); - final Layout<? extends Serializable> layout = - PatternLayout.createCustomLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); + final Layout<? extends Serializable> layout = PatternLayout.custom() + .withPattern(DefaultConfiguration.DEFAULT_PATTERN) + .withConfiguration(this) + .build(); final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true"); appender.start(); Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java Mon May 26 00:23:30 2014 @@ -52,8 +52,10 @@ public class DefaultConfiguration extend public DefaultConfiguration() { setName(DEFAULT_NAME); - final Layout<? extends Serializable> layout = - PatternLayout.createCustomLayout(DEFAULT_PATTERN); + final Layout<? extends Serializable> layout = PatternLayout.custom() + .withPattern(DEFAULT_PATTERN) + .withConfiguration(this) + .build(); final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true"); appender.start(); Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java?rev=1597494&r1=1597493&r2=1597494&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java (original) +++ logging/log4j/log4j2
