0

For some reason, the timestamp in my Tomcat logs is off. The system clock is correct, and set to PST, but the Tomcat logs appear to be using GMT. I haven't been able to find this setting anywhere...hoping someone can shed some light.

Thanks

Thody
  • 173
  • 3
  • 3
  • 5

6 Answers6

3

The JVM might have the wrong timezone set as a default.

Add a JVM option -Duser.timezone=US/Pacific (use the JAVA_OPTS property)

(also do a ps | grep java to look at the JVM command line and see if this option is already set for UTC, perhaps by a configuration setting or environment variable).

Will Glass
  • 907
  • 2
  • 12
  • 21
1

Most logging systems default to UTC. This keeps them readable across timezones.
It also allows you to mix logs from different timezones where applicable.

nik
  • 7,040
  • 2
  • 24
  • 30
  • I suppose that makes sense, although having Apache and Tomcat logging with different timezones, and the application correcting to yet another timezone makes troubleshooting a pain. – Thody Nov 18 '09 at 17:12
  • @Thody, I agree with that. Which is why everything should be in UTC and can be externally converted if necessary. Things get into trouble once timezones are introduced. – nik Nov 18 '09 at 17:21
0

It appears that Java uses the value in /etc/sysconfig/clock as the timezone value when starting up. On my system that was:

ZONE="America/New_York"

Change that value to what you want and restart tomcat.

dustmachine
  • 101
  • 2
0

Has the timezone of the system changed since Tomcat was started? I've had problems where Tomcat picks up the timezone when it first starts, and then refuses to accept a new reality until you kill it and start again.

womble
  • 95,029
  • 29
  • 173
  • 228
  • Nope, the system time has remained the same. I've actually restarted Tomcat several times as well. – Thody Nov 18 '09 at 17:11
0

I had a similar problem due to -Duser.timezone=UTC
You can expose this out with ps -edf | grep catalina if using Linux

0

Java has its own implementation of the tzdata.
For instance, in my ubuntu servers, java's timezone definitions are in /usr/lib/jvm/java-6-sun-1.6.0.14/jre/lib/zi
While the system one are under /usr/share/zoneinfo/

You can specify which timezone java should use by passing the option -Duser.timezone=$TZ where $TZ is the relative path to the timezone file under zi
for example: -Duser.timezone=Etc/GMT+3

  • 2
    It's better to use the named time zone rather than GMT+3. This allow for proper handling daylight savings time. In other words, use US/Pacific instead of GMT-8. – Will Glass Jan 01 '10 at 18:36