コード例 #1
0
        ///
        /// В конструкторе главный параметр уровень важности
        /// При помощи него можно задать какие сообщения будут сохраняться
        /// в журнале, а какие - нет.
        /// Если явно не задается имя журнала, то оно будет совпадать с именем приложения,
        /// за исключением расширения, оно будет не _exe_, а _log_.

        public Loger(
            IMPORTANCELEVEL ImportanceLevel      ///< минимальный уровень важности сохраняемых сообщений;
            , bool lDbg                          ///< отладка  библиотеки журналирования, если установлен в `true`, то файл журнала закрывается после каждого вывода. Приводит к существенному замедлению работы журналирования;
            , string flNm)                       ///<  имя файла журнала.
            : base(ImportanceLevel, lDbg, flNm)
        {
        }
コード例 #2
0
        public void setCnslLvl(string lvl)
        {
            IMPORTANCELEVEL ImportanceLevel = IMPORTANCELEVEL.Error;

            Enum.TryParse(lvl, out ImportanceLevel);
            cnslLvl = ImportanceLevel;
        }
コード例 #3
0
        void mkLog(IMPORTANCELEVEL ImportanceLevel, bool lDbg, string fn)
//        public LOGGER(IMPORTANCELEVEL ImportanceLevel, List<string> items, string fn)
        {
            if (fn == null)
            {
//                string  MyName = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath)
//                +"/"+Path.GetFileNameWithoutExtension(System.Windows.Forms.Application.ExecutablePath)
//                +".log";
//System.IO.Path.GetDirectoryName(
//     System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
                string MyName = Path.GetDirectoryName(new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath)
                                + "/" + Path.GetFileNameWithoutExtension(new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath)
                                + ".log";



                fn = MyName.ToLower();
            }
            this.dbg      = lDbg;
            this.filename = fn;
//            this.Items = items;
            this.ImportanceLevel = ImportanceLevel;
            this.Working         = true;
            // Создание и старт потока логера
            Log          = new Thread(new System.Threading.ThreadStart(LogMessage));
            Log.Priority = ThreadPriority.Lowest;
            this.sw      = new StreamWriter(filename, true);
            Log.Start();
            WriteLine(IMPORTANCELEVEL.Warning
                      , "Logger was started in {0}, console/window {1}/{2} application"
                      , Path.GetFileName(new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath)
                      , PeReaderExtensions.IsConsoleApp()
                      , PeReaderExtensions.IsGuiApp());
        }
コード例 #4
0
//        List<string> Items;


        ///  \brief  Констурктор, создаст и запустит логер
        public LOGGER(string impLevel, bool lDbg, string fn)
        {
            IMPORTANCELEVEL ImportanceLevel = IMPORTANCELEVEL.Error;

            Enum.TryParse(impLevel, out ImportanceLevel);
            mkLog(ImportanceLevel, lDbg, fn);
        }
コード例 #5
0
ファイル: Logger.cs プロジェクト: Artemiy42/CSharpLabs
 // Констурктор, создаст и запустит логер
 public LOGGER(IMPORTANCELEVEL ImportanceLevel)
 {
     this.ImportanceLevel = ImportanceLevel;
     this.Working         = true;
     // Создание и старт потока логера
     Log = new Thread(new System.Threading.ThreadStart(LogMessage));
     Log.Start();
     WriteLine(IMPORTANCELEVEL.Info, "Logger started!");
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: Artemiy42/CSharpLabs
        public static void Main(string[] args)
        {
            IMPORTANCELEVEL x = IMPORTANCELEVEL.Error;

            for (int i = 0; i < args.Length; i++)
            {
                if (hlpF.check(ref i, args))
                {
                    usage();
                }
                else if (dbgF.check(ref i, args))
                {
                    ;
                }
                else if (vF.check(ref i, args))
                {
                    ;
                }
                else if (logLvl.check(ref i, args))
                {
                    ;
                }
                else if (logNm.check(ref i, args))
                {
                    x = Loger.strtoLvl(logNm);
                }
                else if (sleep.check(ref i, args))
                {
                    ;
                }
                else if (max.check(ref i, args))
                {
                    ;
                }
            }
            DateTime st = DateTime.Now;

            using (Loger l = new Loger(logNm, dbgF)){
                if (vF)
                {
                    l.cnslLvl = IMPORTANCELEVEL.Stats;
                }
                primer a = new primer("first", l, ThreadPriority.Normal);
                primer b = new primer("second", l);
                //       a.t.Priority = ThreadPriority.Lowest;
                a.t.Join();
                l.WriteLine(IMPORTANCELEVEL.Stats, "thread '{0}' finished with {1}/{2} numbers/primers"
                            , "first", a.numbers, a.primers);
                b.t.Join();
                l.WriteLine(IMPORTANCELEVEL.Stats, "thread '{0}' finished with {1}/{2} numbers/primers"
                            , "second", b.numbers, b.primers);
                DateTime fn = DateTime.Now;
                l.WriteLine(IMPORTANCELEVEL.Stats, "time of work is {0} secs"
                            , (fn - st).TotalSeconds);
            }
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: Artemiy42/CSharpLabs
        public void WriteLine(IMPORTANCELEVEL Importance, String Format, params object[] Segments)
        {
            if (working && Importance >= this.importanceLevel)
            {
                String Message = String.Format("[{0}]\t", Importance) + "\t" + string.Format(Format, Segments);

                lock (this)
                {
                    stringQueue.Enqueue(Message);
                }
            }
        }
コード例 #8
0
        public static IMPORTANCELEVEL strtoLvl(string code)
        {
            IMPORTANCELEVEL x = IMPORTANCELEVEL.Error;

            try {
                x = (IMPORTANCELEVEL)Enum.Parse(typeof(IMPORTANCELEVEL), code);
            }
            catch {
                x = IMPORTANCELEVEL.Error;
            }
            return(x);
        }
コード例 #9
0
        /// \brief Метод-аналог `Console.WriteLine()` с пользовательскими параметрами
        ///
        /// Метод блокирует доступ к журналу оператором     `lock (this) {}`,
        /// поэтому чтение из очереди сообщений  (LogMessage()) и поставка в очередь
        /// выполняются по очереди

        public void WriteLine(IMPORTANCELEVEL Importance  ///< важность данного сообщения
                              , String Format             ///< строка с форматом сообщения
                              , params object[] Segments  ///< параметры сообщения
                              )
        {
            // Проверка уровня важности сообщения
            if (Working && Importance >= this.ImportanceLevel)
            {
                // Форматирование даты
                // Форматирование сообщения
                String Message = mkNow()
                                 + String.Format("[{0}]\t", Importance) + "\t" + string.Format(Format, Segments);
                // Добавление сообщения в очередь
                lock (this)
                {
                    StringQueue.Enqueue(new pair(Importance, Message));
                }
            }
        }
コード例 #10
0
ファイル: Logger.cs プロジェクト: Artemiy42/CSharpLabs
 // Метод-аналог Console.WriteLine() с пользовательскими аргументами:
 // IMPORTANCELEVEL Importance - важность данного сообщения
 // String Format - форматирование строки
 // params object[] Segments - сегменты (аргументы) строки
 // (аналогично записи - Console.WriteLine("Format", Segments);)
 public void WriteLine(IMPORTANCELEVEL Importance, String Format, params object[] Segments)
 {
     // Проверка уровня важности сообщения
     if (Working && Importance >= this.ImportanceLevel)
     {
         lock (this) {
             // Форматирование даты
             String Date = String.Format(
                 "[" + //DateTime.Now.DayOfWeek +
                 DateTime.Now.Day +
                 "." + DateTime.Now.Month +
                 "." + DateTime.Now.Year +
                 " " + DateTime.Now.Hour +
                 ":" + DateTime.Now.Minute +
                 ":" + DateTime.Now.Second +
                 "] ");
             // Форматирование сообщения
             String Message = Date
                              + String.Format("[{0}]\t", Importance) + "\t" + string.Format(Format, Segments);
             // Добавление сообщения в очередь
             StringQueue.Enqueue(Message);
         }
     }
 }
コード例 #11
0
        public static IMPORTANCELEVEL uitoLvl(uint code)
        {
            IMPORTANCELEVEL rc = IMPORTANCELEVEL.Spam;

            switch (code)
            {
            case 0:  rc = IMPORTANCELEVEL.Ignore; break;

            case 1:  rc = IMPORTANCELEVEL.Info; break;

            case 2:  rc = IMPORTANCELEVEL.FatalError; break;

            case 3:  rc = IMPORTANCELEVEL.Error; break;

            case 4:  rc = IMPORTANCELEVEL.Stats; break;

            case 5:  rc = IMPORTANCELEVEL.Warning; break;

            case 6:  rc = IMPORTANCELEVEL.Debug; break;

            case 7:  rc = IMPORTANCELEVEL.Spam; break;
            }
            return(rc);
        }
コード例 #12
0
 public pair(IMPORTANCELEVEL l, string m)
 {
     lvl = l;
     msg = m;
 }
コード例 #13
0
        public LOGGER(IMPORTANCELEVEL ImportanceLevel, bool lDbg, string fn)

        {
            mkLog(ImportanceLevel, lDbg, fn);
        }
コード例 #14
0
ファイル: Program.cs プロジェクト: Artemiy42/CSharpLabs
        static void Main(string[] args)
        {
            if (args.Length > 1)
            {
                if (args[0] == "-?")
                {
                    Console.WriteLine("to test logger \nusage:\n app.exe [-?] [-d] \n");
                    Environment.Exit(1);
                }
                else if (args[0] == "-d")
                {
                    dFlag = true;
                }
            }
            System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
            System.Version             ver = asm.GetName().Version;

            string MyName = asm.GetName().Name;

            MyName //= Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath)
                += ".Logger.test.log";


            Thread.Sleep(2000);
            Logger = new LOGGER(IMPORTANCELEVEL.Warning, dFlag, MyName);

            for (int i = 0; i < 10; i++)
            {
                Logger.WriteLine(IMPORTANCELEVEL.Info, "this is {0} iteration", i);
                Console.Write("\rthis is {0:00} iteration", i);
                Thread.Sleep(500);
            }


            Thread.Sleep(100);
            Logger.Stop();
            Thread.Sleep(100);
            IMPORTANCELEVEL iL = IMPORTANCELEVEL.Spam;

            Console.Write("\nsecond logger in debug mode for {0} level\n\n", iL);

            //  Logger = new LOGGER(iL, true);
            Logger = new LOGGER(iL);

            Logger.WriteLine(IMPORTANCELEVEL.Warning, " to use debug mode of logger");

            Logger.cnslLvl = IMPORTANCELEVEL.Spam;
            Logger.cnslLvl = IMPORTANCELEVEL.Ignore;
            Logger.cnslLvl = IMPORTANCELEVEL.Error;
            Logger.cnslLvl = IMPORTANCELEVEL.Info;
            Logger.cnslLvl = IMPORTANCELEVEL.FatalError;
            Logger.cnslLvl = IMPORTANCELEVEL.Debug;
            Logger.cnslLvl = IMPORTANCELEVEL.Warning;
            Logger.cnslLvl = IMPORTANCELEVEL.Stats;

            for (uint i = 0; i < 9; i++)
            {
                Logger.WriteLine(LOGGER.uitoLvl(i),
                                 "this is {0} iteration {1}>={2} =={3}  ",
                                 i, LOGGER.uitoLvl(i), Logger.cnslLvl, LOGGER.uitoLvl(i) >= Logger.cnslLvl);
                Thread.Sleep(500);
            }


//						Logger.cnslLvl = IMPORTANCELEVEL.Info;

            for (uint i = 0; i < 0; i++)
            {
                Logger.WriteLine(LOGGER.uitoLvl(i), "this is {0} iteration {1}", i, LOGGER.uitoLvl(i));
            }

            Logger.WriteLine(IMPORTANCELEVEL.Spam, " no any message");
            Logger.WriteLine(IMPORTANCELEVEL.Warning, " to  finish of usage debug mode of logger");
            Logger.Dispose();
            Logger.WriteLine(IMPORTANCELEVEL.Warning, " to  debug");
        }
コード例 #15
0
 public LOGGER(IMPORTANCELEVEL ImportanceLevel) : this(ImportanceLevel, false, null)
 {
 }
コード例 #16
0
 public LOGGER(IMPORTANCELEVEL ImportanceLevel, string flNm) : this(ImportanceLevel, false, flNm)
 {
 }
コード例 #17
0
 public LOGGER(IMPORTANCELEVEL ImportanceLevel, bool lDbg) : this(ImportanceLevel, lDbg, null)
 {
 }