有人知道是否可以在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格式设置日期和时间,而与默认时区无关。