Repository: logging-log4j2 Updated Branches: refs/heads/master 6b31ab3d5 -> f8705e658
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java index 055dd03..9b299b9 100644 --- a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java +++ b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java @@ -40,15 +40,16 @@ public class JpaH2AppenderTest extends AbstractJpaAppenderTest { try (Statement statement = connection.createStatement()) { statement.executeUpdate("CREATE TABLE jpaBaseLogEntry ( " - + "id INTEGER IDENTITY, eventDate DATETIME, level NVARCHAR(10), logger NVARCHAR(255), " - + "message NVARCHAR(1024), exception NVARCHAR(1048576)" + " )"); + + "id INTEGER IDENTITY, eventDate DATETIME, instant NVARCHAR(64), level NVARCHAR(10), " + + "logger NVARCHAR(255), message NVARCHAR(1024), exception NVARCHAR(1048576)" + " )"); } try (Statement statement = connection.createStatement()) { statement.executeUpdate("CREATE TABLE jpaBasicLogEntry ( " - + "id INTEGER IDENTITY, timemillis BIGINT, nanoTime BIGINT, level NVARCHAR(10), loggerName NVARCHAR(255), " - + "message NVARCHAR(1024), thrown NVARCHAR(1048576), contextMapJson NVARCHAR(1048576)," - + "loggerFQCN NVARCHAR(1024), contextStack NVARCHAR(1048576), marker NVARCHAR(255), source NVARCHAR(2048)," + + "id INTEGER IDENTITY, timemillis BIGINT, instant NVARCHAR(64), nanoTime BIGINT, " + + "level NVARCHAR(10), loggerName NVARCHAR(255), message NVARCHAR(1024), " + + "thrown NVARCHAR(1048576), contextMapJson NVARCHAR(1048576), loggerFQCN NVARCHAR(1024), " + + "contextStack NVARCHAR(1048576), marker NVARCHAR(255), source NVARCHAR(2048)," + "threadId BIGINT, threadName NVARCHAR(255), threadPriority INTEGER" + " )"); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHsqldbAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHsqldbAppenderTest.java b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHsqldbAppenderTest.java index 3e22d96..b91734d 100644 --- a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHsqldbAppenderTest.java +++ b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHsqldbAppenderTest.java @@ -44,15 +44,16 @@ public class JpaHsqldbAppenderTest extends AbstractJpaAppenderTest { try (Statement statement = connection.createStatement()) { statement.executeUpdate("CREATE TABLE jpaBaseLogEntry ( " - + "id INTEGER IDENTITY, eventDate DATETIME, level VARCHAR(10), logger VARCHAR(255), " - + "message VARCHAR(1024), exception VARCHAR(1048576)" + " )"); + + "id INTEGER IDENTITY, eventDate DATETIME, instant NVARCHAR(64), level VARCHAR(10), " + + "logger VARCHAR(255), message VARCHAR(1024), exception VARCHAR(1048576)" + " )"); } try (Statement statement = connection.createStatement()) { statement.executeUpdate("CREATE TABLE jpaBasicLogEntry ( " - + "id INTEGER IDENTITY, timemillis BIGINT, nanoTime BIGINT, level VARCHAR(10), loggerName VARCHAR(255), " - + "message VARCHAR(1024), thrown VARCHAR(1048576), contextMapJson VARCHAR(1048576)," - + "loggerFQCN VARCHAR(1024), contextStack VARCHAR(1048576), marker VARCHAR(255), source VARCHAR(2048)," + + "id INTEGER IDENTITY, timemillis BIGINT, instant NVARCHAR(64), nanoTime BIGINT, " + + "level VARCHAR(10), loggerName VARCHAR(255), message VARCHAR(1024), thrown VARCHAR(1048576), " + + "contextMapJson VARCHAR(1048576), loggerFQCN VARCHAR(1024), " + + "contextStack VARCHAR(1048576), marker VARCHAR(255), source VARCHAR(2048)," + "threadId BIGINT, threadName NVARCHAR(255), threadPriority INTEGER" + " )"); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/LogEventEntityTest.java ---------------------------------------------------------------------- diff --git a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/LogEventEntityTest.java b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/LogEventEntityTest.java index ed59b53..823cee3 100644 --- a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/LogEventEntityTest.java +++ b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/LogEventEntityTest.java @@ -24,6 +24,8 @@ import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.ThreadContext.ContextStack; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.ThrowableProxy; +import org.apache.logging.log4j.core.util.Instant; +import org.apache.logging.log4j.core.util.MutableInstant; import org.apache.logging.log4j.message.Message; import org.junit.Assert; import org.junit.Test; @@ -72,6 +74,11 @@ public class LogEventEntityTest { } @Override + public Instant getInstant() { + return new MutableInstant(); + } + + @Override public long getNanoTime() { return 0; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java ---------------------------------------------------------------------- diff --git a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java index 5d4473e..3739731 100644 --- a/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java +++ b/log4j-jpa/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java @@ -34,6 +34,8 @@ import javax.persistence.Transient; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.ThreadContext; +import org.apache.logging.log4j.core.appender.db.jpa.converter.InstantAttributeConverter; +import org.apache.logging.log4j.core.util.Instant; import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter; @@ -136,6 +138,13 @@ public class TestBaseEntity extends AbstractLogEventWrapperEntity { } @Override + @Convert(converter = InstantAttributeConverter.class) + @Column(name = "instant") + public Instant getInstant() { + return this.getWrappedEvent().getInstant(); + } + + @Override @Transient public long getNanoTime() { return this.getWrappedEvent().getNanoTime(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-jpa/src/test/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/log4j-jpa/src/test/resources/META-INF/persistence.xml b/log4j-jpa/src/test/resources/META-INF/persistence.xml index c174abc..d800739 100644 --- a/log4j-jpa/src/test/resources/META-INF/persistence.xml +++ b/log4j-jpa/src/test/resources/META-INF/persistence.xml @@ -28,6 +28,7 @@ <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapJsonAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackJsonAttributeConverter</class> + <class>org.apache.logging.log4j.core.appender.db.jpa.converter.InstantAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MarkerAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter</class> @@ -52,6 +53,7 @@ <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapJsonAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackJsonAttributeConverter</class> + <class>org.apache.logging.log4j.core.appender.db.jpa.converter.InstantAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MarkerAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter</class> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/log4j-perf/src/main/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/resources/META-INF/persistence.xml b/log4j-perf/src/main/resources/META-INF/persistence.xml index c174abc..d800739 100644 --- a/log4j-perf/src/main/resources/META-INF/persistence.xml +++ b/log4j-perf/src/main/resources/META-INF/persistence.xml @@ -28,6 +28,7 @@ <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapJsonAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackJsonAttributeConverter</class> + <class>org.apache.logging.log4j.core.appender.db.jpa.converter.InstantAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MarkerAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter</class> @@ -52,6 +53,7 @@ <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextMapJsonAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.ContextStackJsonAttributeConverter</class> + <class>org.apache.logging.log4j.core.appender.db.jpa.converter.InstantAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MarkerAttributeConverter</class> <class>org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter</class> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e3a126ee/src/site/xdoc/manual/layouts.xml.vm ---------------------------------------------------------------------- diff --git a/src/site/xdoc/manual/layouts.xml.vm b/src/site/xdoc/manual/layouts.xml.vm index d8d9ec3..3760c97 100644 --- a/src/site/xdoc/manual/layouts.xml.vm +++ b/src/site/xdoc/manual/layouts.xml.vm @@ -346,6 +346,10 @@ logger.debug("one={}, two={}, three={}", 1, 2, 3); </p> <pre class="prettyprint linenums">{ "timeMillis" : 1493121664118, + "instant" : { + "epochSecond" : 1493121664, + "nanoOfSecond" : 118000000 + }, "thread" : "main", "level" : "INFO", "loggerName" : "HelloWorld", @@ -736,7 +740,15 @@ WARN [main]: Message 2</pre> </tr> <tr> <td>%d{DEFAULT}</td> - <td>2012-11-02 14:34:02,781</td> + <td>2012-11-02 14:34:02,123</td> + </tr> + <tr> + <td>%d{DEFAULT_MICROS}</td> + <td>2012-11-02 14:34:02,123456</td> + </tr> + <tr> + <td>%d{DEFAULT_NANOS}</td> + <td>2012-11-02 14:34:02,123456789</td> </tr> <tr> <td>%d{ISO8601}</td> @@ -751,6 +763,14 @@ WARN [main]: Message 2</pre> <td>14:34:02,781</td> </tr> <tr> + <td>%d{ABSOLUTE_MICROS}</td> + <td>14:34:02,123456</td> + </tr> + <tr> + <td>%d{ABSOLUTE_NANOS}</td> + <td>14:34:02,123456789</td> + </tr> + <tr> <td>%d{DATE}</td> <td>02 Nov 2012 14:34:02,781</td> </tr> @@ -760,11 +780,19 @@ WARN [main]: Message 2</pre> </tr> <tr> <td>%d{HH:mm:ss,SSS}</td> - <td>14:34:02,781</td> + <td>14:34:02,123</td> + </tr> + <tr> + <td>%d{HH:mm:ss,nnnn} to %d{HH:mm:ss,nnnnnnnnn}</td> + <td>14:34:02,1234 to 14:34:02,123456789</td> </tr> <tr> <td>%d{dd MMM yyyy HH:mm:ss,SSS}</td> - <td>02 Nov 2012 14:34:02,781</td> + <td>02 Nov 2012 14:34:02,123</td> + </tr> + <tr> + <td>%d{dd MMM yyyy HH:mm:ss,nnnn} to %d{dd MMM yyyy HH:mm:ss,nnnnnnnnn}</td> + <td>02 Nov 2012 14:34:02,1234 to 02 Nov 2012 14:34:02,123456789</td> </tr> <tr> <td>%d{HH:mm:ss}{GMT+0}</td> @@ -789,6 +817,18 @@ WARN [main]: Message 2</pre> This is an efficient way to output the event time because only a conversion from long to String takes place, there is no Date formatting involved. </p> + <p> + Log4j 2.11 adds limited support for timestamps more precise than milliseconds when running on Java 9. + Note that not all + <a href="https://docs.oracle.com/javase/9/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a> + formats are supported. + Only timestamps in the formats mentioned in the table above may use the "nano-of-second" + pattern letter <code>n</code> instead of the "fraction-of-second" pattern letter <code>S</code>. + </p> + <p> + Users may revert back to a millisecond-precision clock when running on Java 9 by setting system property + <code>log4j2.Clock</code> to <code>org.apache.logging.log4j.core.util.SystemMillisClock</code>. + </p> </td> </tr> <tr> @@ -2162,6 +2202,7 @@ at org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.testException(Ext loggerFqcn="org.apache.logging.log4j.spi.AbstractLogger" threadId="1" threadPriority="5"> + <Instant epochSecond="1493121664" nanoOfSecond="118000000"/> <Marker name="child"> <Parents> <Marker name="parent"> @@ -2294,6 +2335,9 @@ at org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.testException(Ext </p> <pre class="prettyprint linenums">--- timeMillis: 1493122307075 +instant: + epochSecond: 1493121664 + nanoOfSecond: 118000000 thread: "main" level: "INFO" loggerName: "HelloWorld"
