예제 #1
0
        public DLogger(DLoggerConfig config)
        {
            _lock               = new Object();
            _config             = config;
            _isDefault          = true;
            _name               = config.DefaultLoggerName;
            _allowedMessgeTypes = config.DefaultMessageTypes;

            String outputPath = DLoggerConfig.ParsePath(config.PathOutput);

            if (!outputPath.EndsWith("/"))
            {
                outputPath += "/";
            }
            _fullPath = String.Format(@"{0}{1}.log", outputPath, _name);

            LogStartupMessages();
            //Log(LoggerMessageType.Naked,
            //    new String('-', 50) + Environment.NewLine);
            //Log(LoggerMessageType.Information | LoggerMessageType.Success,
            //    "Logger initialised for '{0}', with allowed message types of '{1}'. Output file is located at '{2}'.",
            //    _name,
            //    _allowedMessgeTypes,
            //    _fullPath);
        }
예제 #2
0
        public Boolean Log(LoggerMessageType type,
                           String format,
                           params System.Object[] args)
        {
            if (!CheckMessageType(type))
            {
                return(false);
            }

            LogWritingEventArgs writingArgs = new LogWritingEventArgs(FullPath,
                                                                      type,
                                                                      String.Format(format, args));

            Writing?.Invoke(this, writingArgs);

            FileInfo outputFile = new FileInfo(FullPath);

            if (!outputFile.Directory.Exists)
            {
                outputFile.Directory.Create();
            }
            LogMessageTemplate messageTemplate = new LogMessageTemplate(_config.MessageTemplateText,
                                                                        writingArgs);

            lock (_lock)
            {
                File.AppendAllText(FullPath, messageTemplate.ToString());
            }
            Console.WriteLine(messageTemplate.ToString());

            return(true);
        }
예제 #3
0
        private Boolean CheckMessageType(LoggerMessageType type)
        {
            lock (_lock)
            {
                if (_allowedMessageTypesList == null)
                {
                    String[] allowedMessageTypes = AllowedMessageTypes.ToString().Split(',');
                    _allowedMessageTypesList = new List <String>();
                    foreach (String curAllowedType in allowedMessageTypes)
                    {
                        _allowedMessageTypesList.Add(curAllowedType.Trim().ToLower());
                    }
                }
            }

            String[] messageTypes = type.ToString().Split(',');
            foreach (String curType in messageTypes)
            {
                if (!_allowedMessageTypesList.Contains(curType.Trim().ToLower()))
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #4
0
 public LogWritingEventArgs(String fullPath,
                            LoggerMessageType messageType,
                            String plainMessage)
 {
     _fullPath     = fullPath;
     _messageType  = messageType;
     _plainMessage = plainMessage;
 }
예제 #5
0
        /// <summary>   New message from logger. </summary>
        ///
        /// <remarks>   AM Kozhevnikov, 30.01.2018. </remarks>
        ///
        /// <param name="messageType">  The type of the message. </param>
        /// <param name="text">         The text. </param>
        ///
        /// <returns>   A LoggerMessage. </returns>

        public static LoggerMessage New(LoggerMessageType messageType, string text, string category)
        {
            return(new LoggerMessage()
            {
                MessageType = messageType,
                Text = text,
                Category = category
            });
        }
예제 #6
0
        private void Parse(String json)
        {
            _configJObject     = JObject.Parse(json);
            _pathOutput        = _configJObject["Paths"]["Output"].Value <String>();
            _defaultLoggerName = _configJObject["Default"]["Name"].Value <String>();
            _defaultEnabled    = _configJObject["Default"]["Enabled"].Value <bool>();
            String defaultMessageTypes = _configJObject["Default"]["AllowedMessageTypes"].Value <String>();

            _defaultMessageTypes  = (LoggerMessageType)Enum.Parse(typeof(LoggerMessageType), defaultMessageTypes, true);
            _messageTemplateIsUTC = Boolean.Parse(_configJObject["MessageTemplate"]["IsUTC"].Value <String>());
            _messageTemplateText  = _configJObject["MessageTemplate"]["Text"].Value <String>();
        }
예제 #7
0
 public void WriteLine(LoggerMessageType messageType, string message, params object[] arguments)
 {
     System.Console.ForegroundColor = ForegroundColors[messageType];
     if (arguments.Length == 0)
     {
         System.Console.WriteLine(message);
     }
     else
     {
         System.Console.WriteLine(message, arguments);
     }
     System.Console.ForegroundColor = ForegroundColors[LoggerMessageType.Default];
 }
예제 #8
0
        public Boolean Log(LoggerMessageType type,
                           String format,
                           params System.Object[] args)
        {
            //This is a special flag which prevents sensitive logging information
            //for being output when a debugger is not attached.
            if (type.HasFlag(LoggerMessageType.Sensitive) && !System.Diagnostics.Debugger.IsAttached)
            {
                return(false);
            }
            else
            {
                type = type & ~LoggerMessageType.Sensitive;
            }

            //We need all message types to be in the allowed message
            //types before we can continue
            String[]      allowedMessageTypes     = AllowedMessageTypes.ToString().Split(',');
            List <String> allowedMessageTypesList = new List <String>();

            foreach (String curAllowedType in allowedMessageTypes)
            {
                allowedMessageTypesList.Add(curAllowedType.Trim().ToLower());
            }
            String[] messageTypes = type.ToString().Split(',');
            foreach (String curType in messageTypes)
            {
                if (!allowedMessageTypesList.Contains(curType.Trim().ToLower()))
                {
                    return(false);
                }
            }

            LogWritingEventArgs writingArgs = new LogWritingEventArgs(FullPath,
                                                                      type,
                                                                      String.Format(format, args));

            Writing?.Invoke(this, writingArgs);

            System.Diagnostics.Debug.WriteLine(String.Format(format, args));
            return(true);
        }
예제 #9
0
        /// <summary>
        /// This function appends the given text to the logger form based on the specified
        /// message type.
        /// </summary>
        /// <param name="value">Text to be appended to the form.</param>
        /// <param name="type">The logger message type.</param>
        public void Log(string value, LoggerMessageType type)
        {
            Style style;

            switch (type)
            {
            case LoggerMessageType.Warning:
                style = warningStyle;
                break;

            case LoggerMessageType.Error:
                style = errorStyle;
                break;

            default:
                style = infoStyle;
                break;
            }

            console.AppendText(DateTime.Now + ": " + value + "\n", style);
        }
예제 #10
0
 public static bool SendMessage(LoggerMessageType loggerType, string message, string category = "None")
 {
     return(SendMessage(LoggerMessage.New(loggerType, message, category)));
 }
예제 #11
0
 public void Write(LoggerMessageType messageType, string message, params object[] arguments)
 {
     System.Console.ForegroundColor = ForegroundColors[messageType];
     System.Console.Write(message, arguments);
     System.Console.ForegroundColor = ForegroundColors[LoggerMessageType.Default];
 }
예제 #12
0
        /// <summary>   Send this message. Отправка сообщения через логгер с произвольным типом, текстом и категорией </summary>
        ///
        /// <remarks>   AM Kozhevnikov, 07.02.2018. </remarks>
        ///
        /// <param name="messageType">  Type of the message. </param>
        /// <param name="text">         The text. </param>
        /// <param name="category">     The category. </param>

        private static void Send(LoggerMessageType messageType, string text, string category)
        {
            Send(LoggerMessage.New(messageType, text, category));
        }
예제 #13
0
 public void WriteMessage(LoggerMessageType messageType, Exception exception)
 {
     mLogWriter.WriteLine("[{0}] [{1:dd.MM.yyyy HH:mm:ss}.{2}] {3}", messageType.ToString().ToUpper(), DateTime.Now, DateTime.Now.Millisecond, exception);
     mLogWriter.Flush();
 }
예제 #14
0
 public void WriteMessage(LoggerMessageType messageType, Exception exception)
 {
     mLogWriter.WriteLine("[{0}] [{1:dd.MM.yyyy HH:mm:ss}.{2}] {3}", messageType.ToString().ToUpper(), DateTime.Now, DateTime.Now.Millisecond, exception);
     mLogWriter.Flush();
 }