有人知道是否可以在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}].");
}如果这段代码为其他人提供了类似的问题。
小心点,
发布于 2012-10-12 23:30:51
定义的默认时区属于完全工作的php应用程序。
除此之外,您还不太清楚地说明希望log4php做什么。该项目包含从邮件列表到发布跟踪器的所有内容--欢迎您发送您的愿望。
发布于 2017-03-22 07:31:48
我也有过类似的问题。您可以通过更改模块中的一行代码来记录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并更改以下行:
This: return date($this->datePattern, $timestamp); 改为: return gmdate($this->datePattern, $timestamp);
注意:唯一改变的是用来格式化日期字符串的函数。date()取决于您使用date_default_timezone_set设置的时区,而gmdate()则在UTC/GMT中格式化日期和时间,而不管默认时区如何。
https://stackoverflow.com/questions/9187345
复制相似问题