C# -Код в 2 проектах для логгера и сервиса, ОШИБКА - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь заставить мой проект EasyLogger C# работать, но не могу отладить этот код, потому что это библиотека классов. Я использую этот регистратор в консольном приложении Windows, которое устанавливается вместе с squirrel в качестве службы Windows, поэтому я не вижу, что находится внутри переменных ....

Что я не так?

Это в Windows Консольном приложении:

        public void Start()
        {
            //Define EasyLogger
            EasyLogger.Logger.Loggerpath = @"C:\Development\ServerSF";
            EasyLogger.Logger.Logname = "Testlog";

            Thread.Sleep(1000);


            //Start EasyLogger
            bool test = EasyLogger.Logger.Log;
            EasyLogger.Logger.StartLog();

            if (test == true)
            {
                //Start service
                _timer.Start();
                ExThred(configManager.ServerName);
            }
            else
            {
                //ERROR log isnt started
            }
        }

Это мой проект EasyLogger:

using System;
using System.IO;
using System.Text;

namespace EasyLogger
{
    public static class Logger
    {
        #region GET SET      
        private static string loggerpath;
        private static string logname;
        private static string message;
        private static bool log;
        public static string Loggerpath
        {
            get => loggerpath;
            set => loggerpath = value;
        }
        public static string Logname
        {
            get => logname;
            set => logname = value;
        }
        public static string Message
        {
            get => message;
            set => message = value;
        }
        public static bool Log
        {
            get => log;
            set => log = value;
        }
        #endregion

        #region Logger
        private static readonly string loggingpath = loggerpath + @"\logs\"+ logname + "-" + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";

        public static void StartLog()
        {
            if(loggerpath == null)
            {
                Message = "Program path is empty!";
                log = false;
            }
            else
            {
                try
                {
                    using (FileStream fs = File.Create(loggingpath))
                    {
                        byte[] info = new UTF8Encoding(true).GetBytes(DateTime.Now.ToString() + " - Logger v0.1 Started...");
                        fs.Write(info, 0, info.Length);
                    }
                    log = true;
                }
                catch
                {
                    Message = "Can't create logfile!";
                    log = false;
                }  
            }
        }

        public static void WriteLog(string msg)
        {
            if (Logname != null)
            {
                if (log == true)
                {
                    string[] lines = new string[] { DateTime.Now.ToString() + " - " + msg };
                    File.AppendAllLines(loggingpath, lines);
                }
                else
                {
                    try { Message = "Logger isn't started yet!"; }
                    catch { Message = "Logger Error!"; }
                }
            }
            else { Message = "Please define first a Logname!"; }
        }

        public static void StopLog()
        {
            log = false;
        }
        #endregion
    }
}

1 Ответ

2 голосов
/ 14 июля 2020

Ваша проблема не в регистраторе. Ваша проблема: как отлаживать службу Windows.

С Visual Studio вы можете сделать это следующим образом:

  1. Скомпилируйте службу Windows с информацией об отладке.
  2. Установите службу и запустите ее.
  3. Запустите Visual Studio.
  4. Выберите «Отладка» -> «Присоединить процесс»
  5. Нажмите «Показать процессы от всех пользователей».
  6. Найдите свою службу и нажмите «Прикрепить».
  7. Выберите «Common Language Runtime»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...