1

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

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

注意安全,

4

2 回答 2

0

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

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

于 2012-10-12T23:30:51.547 回答
0

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

这就是我的做法。转到模块并找到文件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_setgmdate()无论默认时区如何,都以 UTC/GMT 格式设置日期和时间。

于 2017-03-22T07:31:48.140 回答