让码头以正确的时区登录

2024-01-26

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

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

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

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

Thanks


Jetty NCSARequestLog 使用java.util.TimeZone http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html.

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

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

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

您需要的是系统将识别的时区字符串。意思是:

  • 时区标识符不使用 GMT 偏移表示法
  • 时区标识符不是 3 个字母(请参阅关于“三字母时区 ID”的 javadoc 部分 http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html)
  • 时区标识符是长格式。

创建一个简单的 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")

现在在您的配置中使用该长格式时区标识符。

<Set name="LogTimeZone">Europe/London</Set>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让码头以正确的时区登录 的相关文章

随机推荐