У меня есть приложение, получающее сообщения из разных источников (чаты и частные чаты).Можно открыть несколько экземпляров приложения, и конечный результат должен быть похож на следующий сценарий:
В настоящее время каждое приложение сохраняет журналы в каталоге, именем которого являетсяучетная запись используется для входа на чат-сервер;хотя это не проблема для частных источников чата (уникальных для каждого экземпляра приложения), бесполезно многократно сохранять одни и те же логи, что касается общих комнат чата.Журналы сохраняются в текстовом формате, поэтому к ним можно обращаться и читать без маршрутизации через приложение.
Если я не сохраню журналы в отдельных папках, я могу получить исключения ввода-вывода из-за доступаодин и тот же файл одновременно из нескольких процессов, и мне нужно проверить, не была ли строка, которая должна быть сохранена, уже написана другими приложениями.Мне нужно оптимизировать всю операцию и поддерживать читабельность кода.
Кроме того, мой текущий подход к написанию строк следующий:
public void Write(string message)
{
using (var writer = new StreamWriter(_fileName, File.Exists(_fileName)))
writer.WriteLine(message);
}
Что, учитывая, что журналы постоянно пишутся,Возможно, это не самое эффективное решение.
Подводя итог, я задаю следующие вопросы:
- Как создать уникальную папку / базу данных журнала, поддерживая их формат (простой текст), но решаявышеупомянутая проблема с дубликатами / доступом?
- Как улучшить, если возможно, метод письма?Помните, что журналы должны постоянно записываться, но закрытие
StreamWriter
при выходе из приложения не будет правильным решением, поскольку приложение должно работать в течение длительного времени.
Спасибо.