3

我正在使用 Jetty 8 并正在配置我的 jetty.xml 以自定义 requests.log 文件。

我的问题是,Jetty 正在为带有 GMT 时区时间戳的日志提供服务——我在英国,但现在是夏季时间(GMT+1,又名 BST)。大概是因为:

<Set name="LogTimeZone">GMT</Set>

如何让 Jetty 使用服务器上的本地时间来提供日志(这是正确的)?简单地删除<Set name="LogTimeZone">GMT</Set>并没有做任何事情,我不想每 6 个月手动更改一次。

谢谢

4

1 回答 1

6

Jetty NCSARequestLog 使用java.util.TimeZone

GMT是 NCSA 格式的日志文件的默认值,因为这是各种日志分析工具所期望的。

听起来您希望 NCSA 格式的日志使用夏令时感知的时区。在这种情况下,您确实有 1 个选择,请使用适合您的系统和环境的长格式时区。

以下是有关英国伦敦的详细信息:http ://www.timeanddate.com/worldclock/city.html?n=136

您需要的是由您的系统识别的 TimeZone 字符串。意思是:

创建一个简单的 Java 源文件并(在您的系统上)运行以下代码。

package time;

import java.util.TimeZone;

public class TZDump
{
    public static void main(String[] args)
    {
        TimeZone mytz = TimeZone.getDefault();
        System.out.printf("The TimeZone for this machine: %s%n", mytz);
        for (String string : TimeZone.getAvailableIDs(mytz.getRawOffset())) {
            System.out.println(string);
        }   
    }
}

所以对于我的机器,这个报告......

SystemV/MST7MDT
US/Arizona
US/Mountain

我很幸运,因为这个列表很小,对我来说还有一个好处是我住的地方没有观察到夏令时。就我而言,我将使用"US/Arizona".

在你的情况下,你会看到一个更大的列表(只是因为你离欧洲太近了)。"Europe/"选择一个以(我猜你的将是"Europe/London")开头的条目

现在在您的配置中使用那个长格式的 TimeZone 标识符。

<Set name="LogTimeZone">Europe/London</Set>
于 2013-04-17T13:47:02.183 回答