让码头用正确的时区登录

GIS*_*han 3 logging jetty

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

我的问题是,Jetty在GMT时区提供时间戳的日志 - 我在英国,但现在是夏天时间(GMT + 1,又名BST).可能是因为:

<Set name="LogTimeZone">GMT</Set>
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Joa*_*elt 6

Jetty NCSARequestLog使用java.util.TimeZone.

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

听起来您希望NCSA格式的日志使用可以识别夏令时的时区.在这种情况下,您有一个选择,使用适合您的系统和环境的长格式时区.

以下是有关伦敦,英格兰的详细信息: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);
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

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

SystemV/MST7MDT
US/Arizona
US/Mountain
Run Code Online (Sandbox Code Playgroud)

我很幸运,因为这个列表很小,而且对我而言,奖金是我住的地方Daylight节省时间没有被观察到.就我而言,我会用"US/Arizona".

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

现在在配置中使用该长形式TimeZone标识符.

<Set name="LogTimeZone">Europe/London</Set>
Run Code Online (Sandbox Code Playgroud)