Вопрос

Итак, я пытаюсь создать файл журнала ошибок для веб-сайта, работающего на ASP.net и C #.

Я попробовал сохранить диск по обычному пути.Ожидая этого, потому что оно находится в коде c # (код за страницей), оно заберет сервер и сохранит его там.(В конце концов, это код, который выполняется на сервере)

К несчастью для меня, это неправда.Он сохраняется на локальном компьютере, с которого клиент открывает сайт.

Как вы можете принудительно сохранить его на сервере?

Я хочу, чтобы все журналы ошибок были в одном месте.Любые предложения по прочтению или как это сделать.

   string path = "C:\\WebSite";
   string error = "error";          
   try
    {
      // check if dir exists if it does i add file name to the path
      // i removed code to keep it simple
      path += "\\logs.txt";

      FileStream log_fs = 
              new FileStream(path, FileMode.Append, FileAccess.Write);
      StreamWriter log_sw = 
              new StreamWriter(log_fs);
      string log = String.Empty;

      // formate log string using error message

      log_sw.Write(log);
      log_sw.Close();
      log_fs.Close();
   }
   catch (Exception ex)
   {
        // here I e-mail the error in case logging failed
   }

Этот код сгенерирует файл на локальном компьютере, а не на сервере

Это было полезно?

Решение

Вы можете войти в любое место на веб-сервере (на запись в которое учетная запись пользователя ASPNET имеет разрешение) с помощью такого кода, как этот:

string log = String.Empty;

// format log string using error message

try
{
    using (StreamWriter logFile = new StreamWriter(@"C:\WebSite\logs.txt", true))
    {
        logFile.WriteLine(log);
    }
}
catch
{
    // here I e-mail the error in case logging failed
}

При этом файл будет записан на веб-сервер, на котором размещен веб-сайт.Теперь, если вы запускаете веб-сайт локально во время разработки и используете встроенный веб-сервер VS или IIS, то, конечно, файл будет создан на вашем компьютере при локальном тестировании веб-сайта.

Другие советы

Чтобы ответить на предложенную часть вашего вопроса, рассматривали ли вы возможность использования ЭЛЬМА, он будет регистрировать ошибки в разных хранилищах:

Microsoft SQL Server Oracle (OracleErrorLog) Файл базы данных SQLite (версия 3) Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) Свободные XML-файлы Оперативная память (in-memory)

или отправить по электронной почте, twitter

elmah очень прост в настройке и очень эффективен

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top