public void Flush() { lock (this) { if (messageBuffer.Length == 0) { return; } String fileName = filenamePrefix + DateTime.Now.ToString("yyyyMMdd") + ".txt"; if (fileWriter != null && !fileWriter.IsValid(fileName)) { InnerLoggingFileWriter.RemoveInstance(fileWriter); fileWriter = null; } if (fileWriter == null) { fileWriter = InnerLoggingFileWriter.GetInstance(fileName); } if (fileWriter.Write(messageBuffer.ToString())) { messageBuffer.Length = 0; } } }
public void Close() { Flush(); if (fileWriter != null) { InnerLoggingFileWriter.RemoveInstance(fileWriter); fileWriter = null; } }
public static void RemoveInstance(InnerLoggingFileWriter writer) { lock (instances) { writer.refCount = writer.refCount - 1; if (writer.refCount == 0) { writer.Close(); instances.Remove(writer.fileName); } } }
public static InnerLoggingFileWriter GetInstance(String fileName) { lock (instances) { if (!instances.ContainsKey(fileName)) { instances.Add(fileName, new InnerLoggingFileWriter(fileName)); } InnerLoggingFileWriter writer = instances[fileName]; writer.refCount = writer.refCount + 1; return(writer); } }