Hi
I was wondering, and actually have been a bit confused, that the timeStamp of a logging event is taken in the end of the LoggingEvent constructor. Just without further thinking, I would place this to the beginning of the constructor to be as near as possible to the actual event.
Now thinking a bit further, placing the timeStamp to the beginning seems only getting more reasonable.
The constructor contains logic, which depends on the given parameters. This logic will take some time, depending if the current event has a throwable or not. This time will be implicitly added as offset to the original event.
If I create two logs within a very close time (few ms), one containing a throwable and one without, it might even happen, that the original order isn't guaranteed anymore, as, due the offset of the constructor running time, the first event finally might have a later time stamp than the second.

So what is the design reason of taking the timeStamp in the end? I don't see a single benefit. 
Of course I still might have understood something wrong.

regards
marco