20 ago 2009

Escribiendo un archivo de texto en Web

Por alguna razón, necesitaba escribir un archivo de texto a modo de Log con mensajes desde una aplicación web, y dejarlo dentro de la propia estructura del sitio en una carpeta especial parametrizable por web.cofig, y el nombre del archivo siempre debía ser Log.txt

Primeramente en el proyecto que usemos para almacenar las clases utilitarias creamos una nueva o reutilizamos alguna afín. Creamos un método que invocar cuando queramos usar para registrar los mensajes. En la clase que usemos debemos incluir el siguiente import
using System.IO;

y en el método lo siguiente:
String rootPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;
string pathLog = ConfigurationSettings.AppSettings["PATHLOG"];
if (!string.IsNullOrEmpty(pathLog))
{
    pathLog = Path.Combine(rootPath, pathLog);
    pathLog = Path.Combine(pathLog, "Log.txt");

    if (!File.Exists(pathLog))
    {
          using (StreamWriter sw = File.CreateText(pathLog))
          {
                sw.WriteLine("Archivo creado " + DateTime.Now.ToString());
                sw.WriteLine();
          }
    }

    using (StreamWriter sw = File.AppendText(pathLog))
    {
          sw.WriteLine("");
          sw.WriteLine("NUEVO EVENTO______Fecha y Hora:" + DateTime.Now.ToString());
          sw.WriteLine("");
          sw.WriteLine("DESCRIPCION:");
          sw.WriteLine("");
          sw.Write(Mensaje);
          sw.WriteLine("");                 
    }
}

Con esta instruccion System.Web.HttpContext.Current.Request.PhysicalApplicationPath encontramos el path fisico donde se encuentra nuestra aplicación web y por medio de Path.Combine vamos formando el path completo donde queremos dejar nuestro archivo.

Por medio del StreamWriter creamos el archivo si no existe (CreateText) y comenzamos a escribir(AppendText) en el mismo. En este ejemplo la variable Mensaje se pasa por parámetro al método con el texto que queremos dejar en nuestro Log.

Roy {aka. Foy}

Autor & Editor

Desarrallador y líder técnico, con experiencia en tecnologías Microsoft desde los tiempos del VB6 y el asp clásico hasta el .Net Core, pasando por COM+, javascript, angularjs, Ionic, xaml, cordova, MVC, Web Api, Sql Server, Oracle... . Ávido lector, apasionado programador.