Я бы настоятельно рекомендовал посмотреть log4net , чтобы завершить ведение журнала. Это чрезвычайно мощный и гибкий инструмент, в который встроены журналы, основанные на размере, который вы можете указать. Это не тот ответ, который вы ищете здесь, но это определенно стоит посмотреть. Вот пример конфигурации для того, что мы делаем для регистрации во время отладки:
<log4net>
<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
<file value="ClientTools.log"/>
<appendToFile value="true"/>
<maximumFileSize value="3000KB"/>
<rollingStyle value="Size"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss} [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="GeneralLog"/>
</root>
<logger name="NHibernate" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="GeneralLog"/>
</logger>
</log4net>
Этот код в файле app.config создаст файл журнала с именем ClientTools.log в папке приложения, запишет его в определенном формате, включая дату и время, и свернет журнал на 3 МБ.
Чтобы использовать регистратор, мы делаем это в Init () веб-страницы:
общедоступный журнал ILog;
public void InitiateLogging()
{
log4net.Config.XmlConfigurator.Configure();
log = LogManager.GetLogger("MyApplication");
}
А затем, когда вы хотите что-то зарегистрировать, сделайте следующее:
log.Info("No resources available.");
// or
log.Fatal(exception.Message);
// or
log.Warn("Something bad may happen here.");
Вам не нужно беспокоиться о создании объекта потока, закрытии потока, удалении потока и т. Д. И это очень DRY .