log4php and timezone



有人知道是否可以在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}].");
}

如果此代码为其他有类似问题的人提供服务。

安全,

定义的默认时区属于完全工作的php应用程序。

除此之外,您还不太清楚log4php要做什么。该项目包括从邮件列表到问题跟踪器的所有内容,欢迎您发送您的愿望。

我也遇到了类似的问题。您可以通过更改模块中的一行代码,将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格式设置日期和时间,而与默认时区无关。

相关内容

  • 没有找到相关文章

最新更新