Hello chris,

Yes we are facing the exact behavior as mentioned by you

"2017-01-23 04:59:58 Something happened
2017-01-23 04:59:59 Something happened
2017-01-24 05:00:00 Something happened
2017-01-24 05:00:01 Something happened"

The changes made to set timezone to system default only effective for time.
We are only operating in GMT+5 and shipping tomcat logs to different
solutions including SIEM in real-time. So we are purely depending on tomcat
to write the logs with correct date time at first.

I will try to play around with suggestion recommended by you and will let
you know about the outcome.

Thanks
Farhan Tariq

On Mon, Jan 23, 2017 at 8:38 PM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Farhan,
>
> On 1/21/17 2:20 AM, Farhan Tariq wrote:
> > hi,
> >
> > we have tomcat 7.0.68 deployed on linux.
> >
> > To capture the log in local system timezone using
> > ExtendedAccessLogValve class we change the following line
> > "currentTimestampFormat.setTimeZone(TimeZone.getTimeZone("GMT"))"
> >
> > into "currentTimestampFormat.setTimeZone(TimeZone.getDefault())"
> >
> > in ElementTimestampStruct class and then compile and replace the
> > catalina.jar in already deployed tomcat.
> >
> > Now , The time is sync with the system set time which is GMT+5 but
> > somehow date is still operating on GMT as date get changed at 05:00
> > AM ( system time). please help me in this regard to understand why
> > the above mentioned change have no impact of date field.
>
> Are you saying that at 05:00, the timestamps in your log file look
> like this:
>
> 2017-01-23 04:59:58 Something happened
> 2017-01-23 04:59:59 Something happened
> 2017-01-24 05:00:00 Something happened
> 2017-01-24 05:00:01 Something happened
>
> ?
>
> What does TimeZone.getDefault() return in your environment?
>
> The java.util.Date object in ExtendedAccessLog recons time using only
> the epoch time (milliseconds since 1970 in GMT), and always deals with
> it as a long integer value. Only the DateFormat should be making any
> interpretation at all as to how to format the date.
>
> However, the value of that date only changes once per INTERVAL
> milliseconds, and it changes based upon the GMT date. So your
> experience is expected given the code.
>
> Your attempt to change the time zone to something non-GMT isn't
> compatible with the performance optimizations that have been made to
> that class. If you want to completely change the time zone from GMT to
> e.g. GMT+5, then you'll need to adjust the epoch time stored in
> currentTimestamp by setting it forward by 5 hours.
>
> A single adjustment is not adequate, because the date value coming
> from the request for logging will be off by 5 hours each time, and
> that value is used to update the cached value.
>
> I don't believe it is going to be easy for you to change the time zone
> with such a simple change to your code. You will need to add the
> timezone adjustment each time a calculation is performed. For example:
>
> // ExtendedAccessLog.java:217 (tc9/trunk)
>             long millis = eds.currentTimestamp.getTime();
>             if (date.getTime() > (TZ_ADJ + millis + INTERVAL -1) ||
>                     date.getTime() < (TZ_ADJ + millis)) {
>                 eds.currentTimestamp.setTime(
>                         date.getTime() - (date.getTime() % INTERVAL) +
> TZ_ADJ);
>                 eds.currentTimestampString =
>
> eds.currentTimestampFormat.format(eds.currentTimestamp);
>             }
>
> You will have to set the value of TZ_ADJ to be 5hrs, or you could
> compute it from TimeZone.getDefault(). Note that it won't adjust for
> DST or anything like that. I'm not sure if that's a problem for you.
>
> I'm curious... what's wrong with GMT?
>
> - -chris
>
> > On Thu, Dec 15, 2016 at 3:31 AM, Konstantin Kolinko
> > <knst.koli...@gmail.com> wrote:
> >
> >> 2016-12-14 18:48 GMT+03:00 Farhan Tariq
> >> <farhantar...@gmail.com>:
> >>> Hello team,
> >>>
> >>> I am not sure why the timezone is explicitly set to GMT in
> >>> ExtendedAccessLogValve class? To capture URL encoded parameters
> >>> I looking to use this class but need
> >> help
> >>> to get time in GMT+5. I am using tomcat 7 on redhat. Any
> >>> suggestions?
> >>
> >>
> >> 1. Please read the mailing list rules:
> >> http://tomcat.apache.org/lists.html#tomcat-users
> >>
> >> You have not mentioned what exact version of Tomcat you are using
> >> (1.)
> >>
> >> 2. Use of GMT in ExtendedAccessLogValve is by design.
> >>
> >> That valve implements log format specified by "Extended Log File
> >> Format" specification by W3C, and the specification dictates that
> >> the time is in GMT.
> >>
> >> http://tomcat.apache.org/tomcat-8.5-doc/config/valve.
> >> html#Extended_Access_Log_Valve
> >>
> >> https://www.w3.org/TR/WD-logfile.html
> >>
> >>
> >> It may be good to implement configurable timezone in
> >> AccessLogValve (currently it uses TimeZone.getDefault()), but I
> >> think that ExtendedAccessLogValve shall remain with GMT.
> >>
> >> Best regards, Konstantin Kolinko
> >>
> >> ---------------------------------------------------------------------
> >>
> >>
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> >> For additional commands, e-mail: users-h...@tomcat.apache.org
> >>
> >>
> >
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQIcBAEBCAAGBQJYhiNaAAoJEBzwKT+lPKRYaIIQAJGxF3VN5tfrgtAiAVRHrbCx
> wAlmCqqLQ/KpFTxh8JQiDFzmjvjGR8HXfZO9G1RkVAl5VcVWQ8RK6jizVaS21Wfi
> BU5XFWiEz2goV9WpoJF12PUrrUKrvZzMo/n9QIXdWsD/wVFbXnUHPYKhhvIHx8uF
> TZJRlB2Wav2oCw0gYNG5yMf/B/2afjptonZux3EUWAZHnKzZzvn9+PKVXHcRUWFj
> ovtoCTG0NbRKAHphqFIHyL45V27JnkT14XGn8bhBdIQLhifhWfJVtu70HbBluol8
> f80JPMNfB3wTzm+4QTMqTa4ZCYQrrA/s2LPicWJ4vKz0r52jnyKGoPDJKT7oQjEn
> /ipBO20kH8PGxBjU64wbCEV1KEyCYq1+b/mnlX98KFJudNd4jk30pXAUuxhP2PHv
> 40GyGWiJ2GGJpzPuh2df0keUbK11JMk4zsq0lSzzfG1ZJuGrey9Eq9kMA92qAv9R
> es17bwoJPLbKDcY5Ilvi/O8kGU1kjRVrE647KK4HlVIdV8CDMcLLN2xZ4luz7pJL
> L0FlkCedBvy+sBigXC0TTEJG2RZ2qenOC2hwb81ogSTGZ9AhycrsahqYgbm7x7bS
> SC3LCu6NNT2+Si9ZIs5DyzdN1fys0ZbRHyMCSM5BQz81NadY8cYiHSHLPS6gRoB8
> SyuqhSSaHAqeSZKPp2Fh
> =NXSe
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to