2012-02-08 95 views
1

有誰知道是否有可能在log4php庫配置中設置時區?log4php和時區

我沒有在official docs中看到任何關於這方面的信息,但是log4j已經實現了。

現在,我依靠PHP的* date_default_timezone_set *功能這樣的伎倆,但我想離開log4php處理這種對自己...我不知道是否有一個待辦事項列表此或者我們應該依靠自己的內置功能。

這裏是我的代碼:

date_default_timezone_set("America/New_York"); 
require_once (dirname(__FILE__) . '/lib/log4php/Logger.php'); 
Logger::configure(
    array(
     'appenders' => array(
      'default' => array(
       'class' => 'LoggerAppenderRollingFile', 
       'layout' => array(
        'class' => 'LoggerLayoutPattern', 
        'params' => array(
         'conversionPattern' => '%d{Y-m-d H:i:s.u} [%t] %-5p - %m%n' 
        )  
       ), 
       'params' => array(
        'file' => '/var/log/myapp/myapp.' . date('Y-m-d') . '.log', 
        'maxFileSize' => '1MB', 
        'maxBackupIndex' => 10, 
       ), 
      ), 
     ), 
     'rootLogger' => array(
      'appenders' => array('default'), 
     ), 
    ) 
); 

$logger = Logger::getLogger('myapp'); 

for($i=0; $i<5000; $i++) { 
    $logger->info("This is a test [${i}]."); 
} 

在這種情況下,代碼提供別人有類似的問題。

安全,

回答

0

定義的默認時區屬於完全正常工作的php應用程序。

除此之外,你不是很清楚說明你期望log4php做什麼。該項目包括從郵件列表到問題跟蹤器的所有內容 - 歡迎您發送您的願望。

+0

非常簡單...你有一個網站在許多時區提供,但日誌記錄去本地服務器。你會使用服務器的默認值,並且手動處理所有時區的所有頁面上的其他地方的手動操作嗎? – 2012-10-14 02:57:23

+0

也許是的,每個地方都有明確的時區設置來處理用戶輸出 - 他最有可能自己配置時區。所有服務器相​​關的默認時區。我敢打賭,全球企業將在所有服務器上登錄UTC時區。 – Sven 2012-10-14 09:02:49

0

我有類似的問題。您可以通過更改模塊中的一行代碼,將UTC/GMT的日期和時間記錄在log4php中。

這是我的做法。轉到模塊並找到文件LoggerPatternConverterDate.php

cd log4php/pattern/ 
vim LoggerPatternConverterDate.php 

找到private功能date($format, $utimestamp)(我84號線)和改變的返回代碼行。

此: return date(preg_replace('`(?<!\\\\)u`', $ms, $format), $timestamp);

變爲: return gmdate(preg_replace('`(?<!\\\\)u`', $ms, $format), $timestamp);

而且,找到文件:log4php/appenders/LoggerAppenderDailyFile.php並更改以下行:

此: return date($this->datePattern, $timestamp); 變爲: return gmdate($this->datePattern, $timestamp);

注意:唯一更改的是用於格式化日期字符串的函數。 date()取決於您使用date_default_timezone_set設置的時區,而gmdate()格式化UTC/GMT格式的日期和時間,而不考慮默認時區。