From 03670f5125534f46321dd23efca275371af6ee10 Mon Sep 17 00:00:00 2001 From: pramodransingh Date: Wed, 8 Aug 2018 07:22:15 -0400 Subject: [PATCH] Update MongoDbPatternLayoutAppender.java adding code to save pattern layout timestamp in the mongodb as a Date type. Before it was getting saved as a string. --- .../MongoDbPatternLayoutAppender.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/org/log4mongo/MongoDbPatternLayoutAppender.java b/src/main/java/org/log4mongo/MongoDbPatternLayoutAppender.java index 9762f2a..dfa9d38 100644 --- a/src/main/java/org/log4mongo/MongoDbPatternLayoutAppender.java +++ b/src/main/java/org/log4mongo/MongoDbPatternLayoutAppender.java @@ -71,6 +71,11 @@ protected void append(final LoggingEvent loggingEvent) { Object obj = JSON.parse(json); if (obj instanceof DBObject) { bson = (DBObject) obj; + String dateKey = getDateKey(layout); + if(dateKey != null) { + //saving time stamp as a date instead of string + bson.put(dateKey, new Date(loggingEvent.getTimeStamp())); + } } } @@ -84,5 +89,26 @@ protected void append(final LoggingEvent loggingEvent) { } } } + + /** + * this method returns the key of date which is mentioned in layout pattern + * @param layout + * @return + */ + private String getDateKey(Layout layout){ + String key = null; + String conversionPattern =((MongoDbPatternLayout)layout).getConversionPattern(); + String[] splitPattern= conversionPattern.split(","); + for(String pattern : splitPattern) { + if(pattern.contains("%d")) { + key = pattern.split(":")[0]; + } + } + if(key != null) { + key = key.replaceAll("\"|\"$", ""); + key = key.replaceAll("\\{", ""); + } + return key; + } }