public void Write(string sEvent, string sData, HLogLevel Level) { // Método para escribir en el fichero de log Monitor.Enter(this); try { // Si el log está abierto y el nivel de detalle es adecuado ... if ((fFile != null) && (Level >= LogLevel)) { // Obtenemos el nombre del fichero en el que deberíamos escribir string aux = sLogPath + "\\" + this.sBaseName + DateTime.Now.Day.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString() + ".log"; // Si no es el fichero en el que estamos escribiendo ... if (aux != sFile) { // Hemos cambiado de día. sFile = aux; fFile.Close(); File.Delete(sFile); fFile = File.AppendText(sFile); PrivateWrite("Log.Open", DateTime.Now.ToLongDateString(), HLogLevel.Record); } // Escribimos en el fichero PrivateWrite(sEvent, sData, Level); } } finally { Monitor.Exit(this); } }
public Log() { // Inicializamos los atributos a vacío sFile = ""; sLogPath = ""; fFile = null; sBaseName = ""; LogLevel = HLogLevel.Record; }
private void PrivateWrite(string sEvent, string sData, HLogLevel Level) { // Escritura en el fichero fFile.WriteLine ( DateTime.Now.ToLongTimeString() + ", " + Level.ToString() + ", " + sEvent + sData// + "," + sData ); // Nos aseguramos de que no se quede en el buffer fFile.Flush(); }
public void SetLogLevel(HLogLevel LogLevel) { // Método para modificar el nivel de detalle del log Monitor.Enter(this); try { this.LogLevel = LogLevel; } finally { Monitor.Exit(this); } }
public void Open(HLogLevel LogLevel, string sBaseName) { Monitor.Enter(this); try { // Nivel de escritura en el log this.LogLevel = LogLevel; // Directorio en el que reside el ejecutable sLogPath = GetLogPath(); // Si no se ha especificado, el nombre se compone con el propio ejecutable if (sBaseName == "") { this.sBaseName = GetExecutableName(); } else { this.sBaseName = sBaseName; } // Fichero en el que almacenaremos el log ahora sFile = sLogPath + "\\" + this.sBaseName + DateTime.Now.Day.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString() + ".log"; // Si el directorio no existe ... if (!Directory.Exists(sLogPath)) { Directory.CreateDirectory(sLogPath); } // Creamos el streamer de escritura fFile = File.AppendText(sFile); // Añadimos un primer registro al log PrivateWrite("Log.Open", DateTime.Now.ToLongDateString(), HLogLevel.Record); } finally { Monitor.Exit(this); } }