C # Создание текстового файла содержит журналы ошибок

#c#

#c#

Вопрос:

Я создал текстовый файл, чтобы сохранить ошибку в этом созданном файле. У меня есть кнопка, которая при нажатии выдает ошибку, которую следует сохранить в файл. Но если я нажму кнопку дважды, она перезапишет первую сгенерированную ошибку, потому что содержимое файла перезаписывается. Я хочу сгенерировать другой отдельный файл, чтобы сохранить новую ошибку. Для каждой новой ошибки должен создаваться новый файл.

Заранее спасибо

Комментарии:

1. Итак, если я нажму на кнопку 100 раз, вы хотите, чтобы было создано 100 файлов. С какой стати вам это нужно?

2. Реальный вопрос в том, зачем вам (@AshBurlaczenko) это нужно? Вы были пользователем 😉

3. С какой стати люди спрашивают о том, почему кто-то хочет что-то сделать. Этот сайт не о причинах, он о проблемах!

Ответ №1:

Простое использование: метод FileExists, а затем, если он существует, выберите новое имя. В качестве альтернативы вы могли бы просто добавить к файлу.

PSUDO:

 public string checkFileName(string fileName){
  if(File.Exists(fileName)){
    /Pick a new one
    newFileName=  fileName   DateTime.Now.ToLongDateString()
    return checkFileName(newFileName)
   }
   return fileName
}
  

Это может быть идеальной ссылкой для вас, как открыть и добавить файл журнала

Комментарии:

1. Я не хочу добавлять ошибки в тот же файл. Я хочу создать отдельный файл для каждой ошибки

2. Тогда примите мой первый совет. Проверьте, существует ли файл, а затем измените имя файла.

3. Зачем использовать рекурсию для этого? В (маловероятном) случае, если файл уже существует, таким образом, имя просто становится длиннее.

Ответ №2:

Вы можете добавить временную метку в filename, в этом случае вы будете получать новый файл каждый раз.

Ответ №3:

 private void SaveErrorMessage(string errorMessage)
{
    string errorFile = null;
    for( int x = 0; x < Int32.MaxValue;   x )
    {
        errorFile = string.Format(CultureInfo.InvariantCulture, "error-{0}.txt", x);
        if( !System.IO.File.Exists(errorFileTest) )
        {
            break;
        }
    }

    File.WriteAllText(errorFile, errorMessage);
}
  

Это перезапишет последний файл после того, как у вас были файлы Int32.MaxValue, но это займет некоторое время.

Альтернативным (и, вероятно, лучшим) подходом было бы просто добавить к файлу, а не создавать новый.

Вы также можете рассмотреть возможность использования более надежного решения для ведения журнала, такого как log4net.

Ответ №4:

Создание файла на C #, вероятно, это то, что вы ищете.

Ответ №5:

Итак, вы хотите сгенерировать уникальное имя файла для каждой ошибки, возникающей в вашей программе? Вероятно, самый простой способ добиться этого — использовать дату / время, когда произошла ошибка, для присвоения имени файлу. В функции, с помощью которой вы выполняете запись в файл, вы захотите назвать файл следующим образом:

 string filename = LogPath   DateTime.Now.ToString("yyyyMMdd.HHmmss")   ".err";
  

Где LogPath — это путь к папке, в которую вы хотите записать файлы ошибок.