log4php и часовой пояс - PullRequest
       41

log4php и часовой пояс

1 голос
/ 08 февраля 2012

Кто-нибудь знает, можно ли установить часовой пояс в конфигурации библиотеки log4php?

Я не видел никакой информации об этом в официальных документах , но в 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}].");
}

В случае, если этот код служит кому-то ещес аналогичной проблемой.

Будьте в безопасности,

Ответы [ 2 ]

0 голосов
/ 22 марта 2017

У меня была похожая проблема. Вы можете записать дату и время для 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 независимо от часового пояса по умолчанию.

0 голосов
/ 13 октября 2012

Определенный часовой пояс по умолчанию принадлежит полностью работающему php-приложению.

Кроме того, вы не очень ясно представляете, что вы ожидаете от log4php. В проекте есть все, от рассылки до трекера, вы можете присылать свои пожелания.

...