Spring4D のロギングメカニズムはスレッドセーフですか? (ユニット Spring.Logging.* だと思います)
たとえば、複数のスレッドILogger
が次のコンテナーの実装を解決して使用できますか?
uses
System.SysUtils,
Spring.Container,
Spring.Logging,
Spring.Logging.Appenders,
Spring.Logging.Controller,
Spring.Logging.Loggers;
var
Container: TContainer;
TextLogAppender: TTextLogAppender;
FileLogAppender: TFileLogAppender;
LoggerController: TLoggerController;
LoggerInThread1: ILogger;
LoggerInThread2: ILogger;
begin
TextLogAppender := TTextLogAppender.Create;
FileLogAppender := TFileLogAppender.Create;
FileLogAppender.FileName := 'Log.txt';
LoggerController := TLoggerController.Create;
LoggerController.AddAppender(TextLogAppender as ILogAppender);
LoggerController.AddAppender(FileLogAppender as ILogAppender);
Container := TContainer.Create;
try
Container.RegisterInstance<ILoggerController>(LoggerController);
Container.RegisterType<ILogger, TLogger>;
Container.Build;
LoggerInThread1 := Container.Resolve<ILogger>;
LoggerInThread2 := Container.Resolve<ILogger>;
{$Region 'threaded code'}
LoggerInThread1.Info('Hello from Thread 1!');
LoggerInThread2.Info('Hello from Thread 2!');
{$EndRegion}
finally
Container.Free;
end;
end;
ブランチリリース/1.2 (現在33e3232... ) を使用しています。