ログ書き込みのパフォーマンスをあげるべく、Common Log File System(以下CLFS)とEvent Tracing(ETW)を検討しています。まずはCLFS…見事に日本語ないですね。System.IO.Logの説明見たほうがいい…とまではいきませんが。
Visual Studio 2008 SP1に付属しているヘルプではCLFSの説明を見ると、オフライン側はソースが間違ってるw。オンライン側はだいぶ直しているようですが、まだ間違っています。
Creating a Log File (Windows)
if (argc > 3 && logInfo.TotalContainers == 0) { ULONG logContainerSize = _wtol(argv[3]); logPolicy.Version = CLFS_MGMT_POLICY_VERSION; logPolicy.LengthInBytes = sizeof(logPolicy); logPolicy.PolicyType = ClfsMgmtPolicyNewContainerSize; logPolicy.PolicyParameters.NewContainerSize.SizeInBytes = (logContainerSize / SECTOR_SIZE)*SECTOR_SIZE + logPolicy.LengthInBytes; if (!InstallLogPolicy(logHndl, &logPolicy)) ErrorExit("InstallLogPolicy for Container Length");
logPolicy.PolicyParameters.PolicyFlagsに0を設定していないので、InstallLogPolicyが失敗します。ヘルプにも0を指定して!って書いているので、注意が必要と。