使用TPatternLayout的Log4Delphi

使用TPatternLayout的Log4Delphi,delphi,logging,delphi-xe3,timestamp,Delphi,Logging,Delphi Xe3,Timestamp,由于我目前的任务是评估在DelphiXE3中使用的日志系统,所以我试图了解开源解决方案以及CodeSite和SmartInspect。目前我正试图了解Log4Delphi,但除了少量文档之外,我在Delphi XE3中使用Log4Delphi时遇到了以下问题: 基本的日志功能工作得相当好。但是,当我试图使用布局选项向日志消息添加更多信息(如时间戳)时,遇到了一个问题 我使用以下语句在dpr文件中加载配置文件: TConfiguratorUnit.doPropertiesConfiguration

由于我目前的任务是评估在DelphiXE3中使用的日志系统,所以我试图了解开源解决方案以及CodeSite和SmartInspect。目前我正试图了解Log4Delphi,但除了少量文档之外,我在Delphi XE3中使用Log4Delphi时遇到了以下问题:

基本的日志功能工作得相当好。但是,当我试图使用布局选项向日志消息添加更多信息(如时间戳)时,遇到了一个问题

我使用以下语句在dpr文件中加载配置文件:

TConfiguratorUnit.doPropertiesConfiguration(ExtractFileDir(Application.ExeName)+'\MyLoggerconfig.properties')

起初我怀疑配置文件的路径有问题,所以我编写了另一个使用GetCurrentDir方法的方法。但我很快意识到配置文件正在工作

无论我在配置文件中选择哪种布局,appender都会在不使用正确格式的情况下继续写入日志消息。我试着完全按照Log4Delphi的用户指南告诉我的那样做。但是现在我不明白为什么它不能正常工作

var
  Form5: TForm5;
  logger: TLogger;
  layout : TLayout;
implementation
为了使用我的记录器,我声明它如上所示

logger := TLogger.GetInstance;
logger.SetLevel(TLevelUnit.ALL);
我使用这两种方法在mainforms oncreate事件中初始化我的记录器

log4delphi.appender.fileAppender.layout=TPatternLayout
log4delphi.appender.fileAppender.layout.Pattern=%d{dd mmm yyyy hh:nn:ss:zzz} [%5p] %m%n
正如您在上面看到的,我为TPatternLayout选择了默认设置,日志消息应该包含各种信息,如时间戳。但事实上,它看起来是这样的:

WARN - Value of zahl1  2
WARN - Value of zahl2  4

尝试doBasicConfiguration,然后您就知道是否是配置文件导致了问题。我在开始使用Log4Delphi时已经使用了doBasicConfiguration。我已经进行了一些调试,正如我所想,正在读取配置,并且似乎没有问题。但是日志文件仍然没有显示格式。您是否尝试了Delphi调试器?它应该到达从MyLoggerConfig.properties读取布局配置的行。顺便说一句,我也推荐Log4D,这是一个不同的项目,但我们将所有应用程序(从Log4Delphi)切换为使用它可能的副本