我目前在一些c++代码中使用Poco Logger库。它运行在美国的服务器上,但是即使那里的系统时间是正确的时区,日志文件也将时间戳打印为GMT。
这是一个可配置的Poco设置,还是我需要找到的系统设置?我似乎到处都找不到答案!
下面可能有有用的输出。
日志文件示例:2013-04-03 11:49:32.862 GMT[31015]:Debug:...
日志文件格式字符串:pattern = "%Y-%m-%d %H:%M:%S.%i %Z[%P]:%p:%t"
/etc/sysconfig/clock
输出:
ZONE="America/Los_Angeles"
UTC=true
ARC=false
date
: Wed Apr 3 04:57:44 PDT 2013
输出echo $TZ
输出:America/Los_Angeles
任何想法都非常感谢!
Poco::PatternFormatter类有一个属性"times",可以设置为"UTC"(默认)或"local"(您正在寻找的)。您可以在配置文件中设置它,但是必须显式地定义格式化器:
logging.channels.c1.class = FileChannel
logging.channels.c1.path = ${system.tempDir}/sample.log
logging.channels.c1.formatter.class = PatternFormatter
logging.channels.c1.formatter.pattern = %Y-%m-%d %H:%M:%S.%i %Z[%P]:%p:%t
logging.channels.c1.formatter.times = local
如果以编程方式创建格式化器,请使用setProperty()方法:
pPatternFormatter->setProperty("times", "local");
参见:http://pocoproject.org/slides/185-LoggingConfiguration.pdf
如果有人使用xml配置:
<?xml version="1.0" ?>
<Application>
<logging>
<channels>
<logFileChannel>
<class>FileChannel</class>
<path>logs/application.log</path>
<rotation>1 M</rotation>
<archive>timestamp</archive>
<compress>true</compress>
<purgeCount>60</purgeCount>
<formatter>
<class>PatternFormatter</class>
<pattern>%Y-%m-%d %H:%M:%S %p %s [%T] - %t</pattern>
<times>local</times>
</formatter>
</logFileChannel>
</channels>
<loggers>
<root>
<name></name>
<channel>logFileChannel</channel>
<level>debug</level>
</root>
</loggers>
</logging>
</Application>