Nicko,
I found I was having problems with daylight savings time and needed to
change the calculation (but not the static s_date1970). I'm now using:
// Calculate the timestamp as the number of
milliseconds since January 1970 UTC/GMT
// Note that the offset between local time and GMT
changes when daylight saving time starts and ends
TimeSpan timeSince1970 = loggingEvent.TimeStamp -
s_date1970
-
localZone.GetUtcOffset(loggingEvent.TimeStamp);
The root of the problem seems to be Windows' unique method of keeping the
timezone (difference to UTC) information in the DateTime object but not
changing it when the time is changed to UTC. As the difference between local
time and UTC changes when you start or stop daylight savings time and my
servers need to keep on logging, the value must be determined for each
timestamp.
I've tested it with various winter and summer times (including one from a
Microsoft blog) and chainsaw showed the correct time.
I've picked up a lot of sympathy for the winCVS developers who, a few years
ago, had great difficulty extracting sensible times from Samba and SMB
shares.
Regards,
Mike Blake-Knox
email: [EMAIL PROTECTED]
TSYS Office: (706) 644-3643
cellphone: (706) 570-4641
> -----Original Message-----
> From: Nicko Cadell [mailto:[EMAIL PROTECTED]
> Sent: Thursday, August 19, 2004 1:41 PM
> To: Log4NET User
> Subject: RE: XmlLayoutSchemaLog4j timestamp
>
> Mike,
>
> I must have been up late when I wrote that! The CVS code has
> been changed to:
>
> DateTime s_date1970 = new DateTime(1970, 1, 1);
>
> Which should do the job.
>
> Cheers,
> Nicko