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; + } }