首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4php与时区

log4php与时区
EN

Stack Overflow用户
提问于 2012-02-08 03:10:56
回答 2查看 1.2K关注 0票数 1

有人知道是否可以在log4php库配置中设置时区吗?

我在官方文件中没有看到任何有关这方面的信息,但是log4j已经实现了这一点。

现在,我依赖于php的*date_default_timezone_set*函数来完成这个任务,但是我想让log4php自己来处理.我想知道这是否有一个待办事项清单,或者我们应该依靠内置的功能自己。

下面是我的代码:

代码语言:javascript
复制
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}].");
}

如果这段代码为其他人提供了类似的问题。

小心点,

EN

回答 2

Stack Overflow用户

发布于 2012-10-12 23:30:51

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

除此之外,您还不太清楚地说明希望log4php做什么。该项目包含从邮件列表到发布跟踪器的所有内容--欢迎您发送您的愿望。

票数 0
EN

Stack Overflow用户

发布于 2017-03-22 07:31:48

我也有过类似的问题。您可以通过更改模块中的一行代码来记录log4php中UTC/GMT的日期和时间。

我就是这样做的。转到模块并找到文件LoggerPatternConverterDate.php

代码语言:javascript
复制
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并更改以下行:

This: return date($this->datePattern, $timestamp); 改为: return gmdate($this->datePattern, $timestamp);

注意:唯一改变的是用来格式化日期字符串的函数。date()取决于您使用date_default_timezone_set设置的时区,而gmdate()则在UTC/GMT中格式化日期和时间,而不管默认时区如何。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9187345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档