private static object s_lock = new object(); public static void TraceLog(string message, string logFileName, string logPath = null) { string tmppath = string.Empty; if (logPath != null && logPath.Length > 0) tmppath = logPath; else tmppath = AppDomain.CurrentDomain.BaseDirectory + "\\Log\\"; if (!Directory.Exists(tmppath)) { Directory.CreateDirectory(tmppath); } lock (s_lock) { StreamWriter myFile = null; try { myFile = new StreamWriter(tmppath + DateTime.Now.ToString("yyyyMMdd") + logFileName.ToString() + ".log", true, Encoding.Default); TextWriterTraceListener textL = new TextWriterTraceListener(myFile); DefaultTraceListener defL = new DefaultTraceListener(); if (Trace.Listeners.IndexOf(textL) == -1) { Trace.Listeners.Clear(); Trace.Listeners.Add(textL); Trace.Listeners.Add(defL); } Trace.AutoFlush = true; Trace.WriteLine(string.Empty); Trace.WriteLine(message); } catch (Exception ioe) { Console.WriteLine(ioe.Message); } finally { if (myFile != null) { myFile.Close(); myFile.Dispose(); } } } }