Создание собственного логгера. Обработка ситуации с недоступным или повреждённым файлом - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите, пожалуйста, решить следующую проблему: Есть в программе функция записи в лог:
public void log_function(string error) {
            StreamWriter sw;
            
            FileInfo log_file = new FileInfo(@"D:\Projects\test.log");
            sw = log_file.AppendText();
            sw.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss\t"));
            sw.WriteLine(error);
            sw.Close();
        
        }
И есть в программе код, который определеяет размер файла, и в случае превышения определенного размера, переименовывает файл и создает другой.
FileInfo log_file = new FileInfo(@"D:\Projects\test.log");
            long fileByteSize = log_file.Length;
            if (fileByteSize >= 102400) 
            {
                try
                {
                    File.Move(@"D:\Projects\test.log", @"D:\Projects\log" + DateTime.Now.ToString(" dd MM yyyy hh.mm.ss") + ".txt");
              
                }
 
                catch 
                {
           
                }
Проблема в том, что если файл недоступен, то будет ошибка. Как поступить, если файл недоступен или поврежден? Спасибо за помощь!

Решение задачи: «Создание собственного логгера. Обработка ситуации с недоступным или повреждённым файлом»

textual
Листинг программы
public void log_function(string error) {
            StreamWriter sw;
            FileInfo log_file = new FileInfo(@"D:\Projects\test.log");
           
            try
                {
                long fileByteSize = log_file.Length;
                if (fileByteSize >= 102400)
                   {
                    File.Move(@"D:\Projects\test.log", @"D:\Projects\log" + DateTime.Now.ToString(" dd MM yyyy hh.mm.ss") + ".txt");
                   }
                sw = log_file.AppendText();
                sw.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss\t"));
                sw.WriteLine(error);
                sw.Close();
                }
 
              catch
               {
                    StreamWriter sw_e;
                    FileInfo log_error= new FileInfo(@"D:\Projects\test1.log");
                   
                    sw_e = log_file.AppendText();
                    sw_e.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss\t"));
                    sw_e.WriteLine(error);
                    sw_e.Close();
                }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы