private static void WriteMessageToFile(JLogMessage writeMsg) { lock (_setting_lock) { if (!_inited) { return; } try { foreach (JLogSettings setting in JLogSpecifiedSettingsSet.JLogSettingsList) { string strPrefix = setting.LogFileNamePrefix.ContainsKey(writeMsg.LogType) ? setting.LogFileNamePrefix[writeMsg.LogType] : ""; string strStem = setting.LogFileNameStem.ContainsKey(writeMsg.LogCategory) ? setting.LogFileNameStem[writeMsg.LogCategory] : ""; string strFileName = string.Format("{0}log{1}{2}{3}", setting.LogFileDir, strPrefix, strStem, setting.LogFileNameSuffix); if (!Directory.Exists(setting.LogFileDir)) { Directory.CreateDirectory(setting.LogFileDir); } /*if (!_writers.ContainsKey(strFileName)) * {*/ StreamWriter writer = new StreamWriter(strFileName, true, System.Text.Encoding.UTF8); /* _writers[strFileName] = writer; * }*/ string msgText = string.Format("{0} {1} {2} : {3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), writeMsg.LogType.GetDescription(), writeMsg.LogCategory.GetDescription(), writeMsg.LogMessage); writer.WriteLine(msgText); writer.Flush(); writer.Close(); /*_writers[strFileName].WriteLine(msgText); * _writers[strFileName].Flush(); */ } } catch (Exception e) { } } }
public static void AddMessage(JLogMessage message) { try { lock (_message_lock) { if (null != JLogSpecifiedMessagesQueue.MessagesQueue.LogMessages) { JLogSpecifiedMessagesQueue.MessagesQueue.LogMessages.Enqueue(message); _semaphore.Release(); } } } catch (Exception e) { //no need to deal } }
private static void run() { while (true) { JLogMessage message = TakeMessage(); if (null != message) { WriteMessageToFile(message); } else if (!WaitLogMessage()) { /*foreach (StreamWriter writer in _writers.Values) { * writer.Flush (); * writer.Close (); * }*/ break; } } }