2013-04-17 19 views
3

我使用Jetty 8並配置我的jetty.xml來自定義requests.log文件。讓碼頭用正確的時區登錄

我的問題是,碼頭在格林尼治標準時區服務的日誌與時間戳 - 我在英國,但現在的夏季時間(GMT + 1,又名,BST)。可能是因爲:

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

如何使用服務器上的任何本地時間(這是正確的)獲得Jetty服務日誌? 簡單地刪除<Set name="LogTimeZone">GMT</Set>沒有做任何事情,我不想每6個月手動更改一次。

感謝

回答

6

碼頭NCSARequestLog使用java.util.TimeZone

GMT是NCSA格式化日誌文件的默認值,因爲這是各種日誌分析工具所期望的。

聽起來好像您希望NCSA格式的日誌使用夏令時識別的時區。在這種情況下,您真的有一個選擇,使用適合您的系統和環境的長格式時區。

下面是關於英國倫敦的細節: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"

現在在你的配置中使用那個長形式的TimeZone標識符。

<Set name="LogTimeZone">Europe/London</Set> 
+0

謝謝,這很好! –

相關問題