Мне не удалось выяснить, как вращать файл журнала до того, как будет достигнуто значение maxMessagesToLog.
Я решил поворачивать файл журнала каждую полночь.Если для maxMessagesToLog задать значение max integer = 2147483647, количество сообщений за один день никогда не превысит это значение.Я использовал пользовательский прослушиватель трассировки, как описано на форуме WCF .
public class CustomTraceListener : XmlWriterTraceListener
{
public CustomTraceListener(string fileName)
: base(string.Format(fileName,
string.Format("{0}{1}{2}", DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year)))
{
}
}
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="traceListener"
type="MyService.CustomTraceListener, MyService"
initializeData= "c:\wcflogs\messages_{0}.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
. Я создал свой пул приложений с Recycling Specific Times = 00: 00: 00
appcmd add apppool /name:MyApppool/enable32BitAppOnWin64:true /+recycling.periodicRestart.schedule.[value='00:00:00']
Расширенные настройки пула приложений выглядят с этой командой следующим образом:
Поэтому процесс перезапускается каждую полночь, а счетчик сообщенийначинается с 0. Пока у меня менее 2 миллиардов сообщений в день, все сообщения будут храниться в файле журнала.