예제 #1
0
        public static void Writer(Model.LogLevel level, string content)
        {
            var logText = string.Format("[{0}] [{1}] {2}\n",
                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                        level.ToString(),
                                        content
                                        );

            LogWriteLock.EnterWriteLock();
            try
            {
                File.AppendAllText(FilePath, logText);
            }
            catch (Exception)
            {
            }
            finally
            {
                LogWriteLock.ExitWriteLock();
            }
        }
예제 #2
0
        /// <summary>
        /// Log message.
        /// </summary>
        /// <param name="content">
        /// The content.
        /// </param>
        /// <param name="type">
        /// The type.
        /// </param>
        /// <param name="level">
        /// The level.
        /// </param>
        public void LogMessage(string content, LogMessageType type, LogLevel level)
        {
            if (!this.isLoggingEnabled)
            {
                return;
            }

            if (level > this.currentLogLevel)
            {
                return;
            }

            LogMessage msg = new LogMessage(content, type, level, this.messageIndex);

            lock (this.lockObject)
            {
                this.messageIndex = this.messageIndex + 1;
                this.logMessages.Add(msg);
                this.logBuilder.AppendLine(msg.Content);
                this.LogMessageToDisk(msg);

                if (this.logMessages.Count > 50000)
                {
                    this.messageIndex = this.messageIndex + 1;
                    msg = new LogMessage(
                        "Log Service Pausing. Too Many Log messages. This may indicate a problem with your encode.",
                        LogMessageType.Application,
                        LogLevel.Error,
                        this.messageIndex);
                    this.logMessages.Add(msg);
                    this.logBuilder.AppendLine(msg.Content);
                    this.LogMessageToDisk(msg);

                    this.Disable();
                }
            }

            this.OnMessageLogged(msg); // Must be outside lock to be thread safe.
        }
예제 #3
0
 /// <summary>
 /// The set log level. Default: Info.
 /// </summary>
 /// <param name="level">
 /// The level.
 /// </param>
 public void SetLogLevel(LogLevel level)
 {
     this.currentLogLevel = level;
 }