/// <summary> /// 日志写入以及日志界面更新Task /// </summary> private void RunTask() { while (mGetLogQueueFlg) { lock (locker) { foreach (KeyValuePair <string, IJFLogger> logger in existtLoggers) { JFLogger log = logger.Value as JFLogger; if (log.mLogQueue.Count > 0) { JFLogger.LogRecord rcd; lock (log.mLogQueue) { rcd = log.mLogQueue.Dequeue() as JFLogger.LogRecord; } //存文件 log.ShowInfo2UI(rcd); //写日志 string commandtext = string.Format("insert into {0} values('{1}','{2}','{3}')", logger.Key, rcd.Time.ToString("yyyy-MM-dd HH:mm:ss"), log.TransLogLevelToString(rcd.Level), rcd.Info); jFSQLiteDB.ExecuteNonQuery(connectstring, CommandType.Text, commandtext); } } } } }
/// <summary> /// 获取一个日志对象 /// </summary> /// <param name="name">日志对象(名称)标识</param> /// <returns></returns> public IJFLogger GetLogger(string name) { string connectionCreatTableString = string.Format("CREATE TABLE IF NOT EXISTS {0}(Time string,LogLevel string,Message string)", name); if (threadRunTask == null) { threadRunTask = new Thread(RunTask); threadRunTask.Start(); } if (string.IsNullOrEmpty(name)) { return(null); } lock (locker) { if (existtLoggers.ContainsKey(name)) { return(existtLoggers[name] as IJFLogger); } JFLogger ret = new JFLogger(name); if (jFSQLiteDB.CreateDB(connectstring)) { jFSQLiteDB.CreateOrDeleteTable(connectionCreatTableString); } existtLoggers.Add(name, ret); for (int i = 0; i < waitBindUIs.Count; i++) { KeyValuePair <string, UCLogger> item = waitBindUIs[i]; if (item.Key == name) { ret.AddUI(item.Value); waitBindUIs.Remove(item); i--; } } return(ret as IJFLogger); } }