logging - 让 jetty 以正确的时区登录

标签 logging jetty

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

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

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

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

谢谢

最佳答案

Jetty NCSARequestLog 使用java.util.TimeZone

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

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

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

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

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

关于logging - 让 jetty 以正确的时区登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058343/

相关文章:

c++ - 如何在 C++ 中创建日志?

java - flash websocket + jetty

java - jersey-spring3 (2.25.1) 在 jetty-9.3.3 中产生 "Failed startup of context"错误

Java, window : Get process name of given PID

java - SSL异常 : SSL peer shut down incorrectly

java - 选择哪个 log4j facade?

java - log4j2 - 如何动态更改文件?

php - 在 MySQL 中创建联系人的历史日志

java - 在 Java 中更清晰的调试级别日志记录?

gwt - 使用https保护GWT应用程序