Código fuente completo de una clase de C# (C Sharp), con Visual Studio .Net, que permite escribir mensajes en fichero de texto (fichero de log) y también mostrarlos por la consola. Mostramos la clase completa y un ejemplo de uso.
- Clase C# .Net que escribe un texto en un fichero y lo muestra por la consola.
- Ejemplo de uso de la clase EscribirLog en C#.
Clase C# .Net que escribe un texto en un fichero y lo muestra por la consola
A continuación mostramos el código completo de la clase EscribirLog. Se puede agregar a cualquier aplicación y nos permitirá escribir un texto en un fichero de log y, también, mostrarlo por consola:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using System; using System.IO; namespace MiSolucionCSharNET { class EscribirLog { public string mensajeLog { get; set; } public Boolean mostrarConsola { get; set; } //Constructor si se pasa el mensaje por parámetro en la creación de la clase public EscribirLog(string mensajeEnviar, Boolean mostrarConsola) { mensajeLog = mensajeEnviar; if (mostrarConsola) monstrarMensajeConsola(); escribirLineaFichero(); } //Constructor si se pasa el mensaje por setter tras la creación de la clase public EscribirLog() { if (mostrarConsola) monstrarMensajeConsola(); escribirLineaFichero(); } public void monstrarMensajeConsola() { //Quitar posibles saltos de línea del mensaje mensajeLog = mensajeLog.Replace(Environment.NewLine, " | "); mensajeLog = mensajeLog.Replace("\r\n", " | ").Replace("\n", " | ").Replace("\r", " | "); Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss") + " " + mensajeLog); } //Escribe el mensaje de la propiedad mensajeLog en un fichero en la carpeta del ejecutable public void escribirLineaFichero() { try { FileStream fs = new FileStream(@AppDomain.CurrentDomain.BaseDirectory + "estado.log", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); //Quitar posibles saltos de línea del mensaje mensajeLog = mensajeLog.Replace(Environment.NewLine, " | "); mensajeLog = mensajeLog.Replace("\r\n", " | ").Replace("\n", " | ").Replace("\r", " | "); m_streamWriter.WriteLine(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss") + " " + mensajeLog); m_streamWriter.Flush(); m_streamWriter.Close(); } catch { //Silenciosa } } } } |
Ejemplo de uso de la clase EscribirLog en C#
A continuación mostramos un sencillo ejemplo donde se instancia la clase EscribirLog y se usa para almacenar un texto en un fichero, junto con el día y la hora de guardado. Como es lógico, previamente debe agregarse la clase EscribirLog a nuestra la solución:
Un ejemplo de uso de la clase, que si se produce un error en la conexión con la base de datos, lo guardará en el fichero de log. También lo usamos para guardar en el fichero de log el momento en que realizamos la conexión con la base de datos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public void conectarBD() { if (conexionBD != null) conexionBD.Close(); string connStr = String.Format("server={0};port={1};user id={2}; password={3}; " + "database={4}; pooling=true;" + "Allow Zero Datetime=False;Convert Zero Datetime=True", this.servidor, this.puerto, this.usuario, this.contrasena, this.bd); try { new EscribirLog("Conectando a servidor BD " + this.servidor + " [" + this.bd + "]", true); conexionBD = new MySqlConnection(connStr); conexionBD.Open(); new EscribirLog("Conectado a servidor BD " + this.servidor + " [" + this.bd + "]", true); } catch (MySqlException ex) { new EscribirLog("Error al conectar al servidor de BD " + this.servidor + " [" + this.bd + "] " + ex.Message, true); } finally { conexionBD.Close(); } } |
La clase creará el fichero de log siguiente en la carpeta donde esté el ejecutable de la aplicación:
Si hemos indicado el parámetro mostrarConsola a true, también mostrará el texto por consola: