Esempio n. 1
0
        public void Log(IDatabaseLog ev, bool traceErrors)
        {
            lock (this)
            {
                if (_logThread == null)
                {
                    if (dbLogSwitch.TraceWarning && traceErrors)
                    {
                        Debug.WriteLine("Unable to log to database as system not running", DbTraceListener.catInfo);
                    }

                    throw new Exception("Unable to log to database as system not running");
                }

                lock (_eventQueue)
                {
                    _eventQueue.Add(new DatabaseLogItem(ev, traceErrors));
                    _eventQueueItem.Set();
                }
            }
        }
 public MorpherLog(IDatabaseLog database, IMorpherCache morpherCache)
 {
     _database     = database;
     _morpherCache = morpherCache;
 }
Esempio n. 3
0
 public DatabaseLogItem(IDatabaseLog item, bool traceErrors)
 {
     _item        = item;
     _traceErrors = traceErrors;
 }
Esempio n. 4
0
        private void ThreadFunction()
        {
            if (dbLogSwitch.TraceVerbose)
            {
                Debug.WriteLine("Database logging thread initialized", DbTraceListener.catInfo);
            }

            using (OleDbConnection conn = new OleDbConnection(_connectionString))
            {
                _eventThreadReady.Set();

                bool exiting = false;

                do
                {
                    _eventQueueItem.WaitOne();

                    // Copy items / state to local queue
                    DatabaseLogItem[] localQueue;
                    lock (_eventQueue)
                    {
                        localQueue = new DatabaseLogItem[_eventQueue.Count];
                        _eventQueue.CopyTo(localQueue);
                        _eventQueue.Clear();

                        exiting = _exiting;
                    }

                    bool traceErrors = true;

                    try
                    {
                        if (conn.State != ConnectionState.Open)
                        {
                            conn.Open();
                        }

                        foreach (DatabaseLogItem i in localQueue)
                        {
                            try
                            {
                                IDatabaseLog r = i._item;

                                if (!i._traceErrors)
                                {
                                    traceErrors = false;
                                }

                                // Dynamically create insert command if we've never processed
                                // this type of object before
                                OleDbCommand insCmd;
                                _insertCmdHash.TryGetValue(r.GetType(), out insCmd);
                                if (insCmd == null)
                                {
                                    insCmd                      = r.CreateInsertCommand();
                                    insCmd.Connection           = conn;
                                    _insertCmdHash[r.GetType()] = insCmd;
                                }

                                r.FillInsertCmd(insCmd);
                                insCmd.ExecuteNonQuery();
                            }
                            catch (Exception ex)
                            {
                                if (dbLogSwitch.TraceError)
                                {
                                    if (i._traceErrors)
                                    {
                                        Debug.WriteLine("Unable to log to database:" + ex.Message,
                                                        DbTraceListener.catError);
                                    }
                                }
                                continue;
                            }
                        }

                        if (dbLogSwitch.TraceVerbose && traceErrors)
                        {
                            Debug.WriteLine(String.Format("{0} status message(s) logged sucecssfully to database",
                                                          localQueue.Length), DbTraceListener.catInfo);
                        }

                        conn.Close();
                    }
                    catch (Exception ex)
                    {
                        if (dbLogSwitch.TraceError && traceErrors)
                        {
                            Debug.WriteLine("Unable to connect to database:" + ex.Message,
                                            DbTraceListener.catError);
                        }
                    }
                } while (!exiting);
            }
        }
Esempio n. 5
0
 public void Log(IDatabaseLog ev)
 {
     Log(ev, true);
 }
Esempio n. 6
0
			public DatabaseLogItem(IDatabaseLog item, bool traceErrors)
			{
				_item = item;
				_traceErrors = traceErrors;
			}
Esempio n. 7
0
		public void Log(IDatabaseLog ev, bool traceErrors)
		{
			lock (this)
			{
				if (_logThread == null)
				{
					if (dbLogSwitch.TraceWarning && traceErrors)
						Debug.WriteLine("Unable to log to database as system not running", DbTraceListener.catInfo);

					throw new Exception("Unable to log to database as system not running");
				}

				lock (_eventQueue)
				{
					_eventQueue.Add(new DatabaseLogItem(ev, traceErrors));
					_eventQueueItem.Set();
				}
			}
		}
Esempio n. 8
0
		public void Log(IDatabaseLog ev)
		{
			Log(ev, true);
		}