示例#1
0
        internal void LogEventHandler(LogEventData logevent)
        {
            lock (_list)
            {
                if (_list.Count > _size)
                {
                    _list.RemoveAt(0);
                }

                _list.Add(logevent);
            }
        }
示例#2
0
        public static void Log(string message, string source, LoggingType type, int level, bool FileOnly)
        {
            //Update Paths to logfile
            FileInfo fileLOG      = null;
            FileInfo fileSource   = null;
            FileInfo fileCritical = null;

            DateTime now = DateTime.Now;

            lock (_lockLogging)
            {
                try
                {
                    LogEventData logevent = new LogEventData {
                        Source = source, Message = message, Time = now, Type = type, Level = level
                    };


                    if (level <= _maxlogLevel && pathToLog != null)
                    {
                        DirectoryInfo tempPath = new DirectoryInfo(pathToLog.FullName + "\\" + String.Format("{0:00}", DateTime.Now.Year) + String.Format("{0:00}", DateTime.Now.Month) + String.Format("{0:00}", DateTime.Now.Day) + "\\");
                        if (!tempPath.Exists)
                        {
                            Directory.CreateDirectory(tempPath.FullName);
                        }

                        fileLOG      = new FileInfo(tempPath.FullName + "!LOG!.txt");
                        fileSource   = new FileInfo(tempPath.FullName + source + ".txt");
                        fileCritical = new FileInfo(tempPath.FullName + "!!!   CRITICAL  !!!.txt");
                    }

                    if (fileLOG != null)
                    {
                        using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileLOG.FullName, true))
                        {
                            switch (type)
                            {
                            case LoggingType.Error: file.WriteLine(FormatDate(DateTime.Now) + ": ERROR: " + source + " [" + level + "]: " + message); break;

                            case LoggingType.Status: file.WriteLine(FormatDate(DateTime.Now) + ": " + source + " [" + level + "]: " + message); break;

                            case LoggingType.Critical: file.WriteLine(FormatDate(DateTime.Now) + ": CRITICAL: " + source + " [" + level + "]: " + message); break;
                            }
                        }
                    }

                    if (fileSource != null)
                    {
                        using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileSource.FullName, true))
                        {
                            switch (type)
                            {
                            case LoggingType.Error: file.WriteLine(FormatDate(DateTime.Now) + ": ERROR: " + source + " [" + level + "]: " + message); break;

                            case LoggingType.Status: file.WriteLine(FormatDate(DateTime.Now) + ": " + source + " [" + level + "]: " + message); break;

                            case LoggingType.Critical: file.WriteLine(FormatDate(DateTime.Now) + ": CRITICAL: " + source + " [" + level + "]: " + message); break;
                            }
                        }
                    }

                    if (fileCritical != null)
                    {
                        using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileCritical.FullName, true))
                        {
                            if (type == LoggingType.Critical)
                            {
                                file.WriteLine(FormatDate(DateTime.Now) + ": CRITICAL: " + source + " [" + level + "]: " + message);
                            }
                        }
                    }

                    //Write to console
                    if (level <= _maxlogLevel)
                    {
                        Console.WriteLine(now.ToString() + ":\t" + source + "\t" + message);
                    }


                    //Fire log event
                    if (LogEvent != null)
                    {
                        LogEvent(logevent);
                    }
                }
                catch (Exception ex) { Console.WriteLine("Error while logging to file! " + ex.Message); }
            }
        }