/// <summary>
        /// Writes to log.
        /// </summary>
        /// <param name="logLevel">The log level.</param>
        /// <param name="domain">The domain.</param>
        /// <param name="messageTemplate">The message template.</param>
        public void WriteToLog(RockLogLevel logLevel, string domain, string messageTemplate)
        {
            EnsureLoggerExistsAndUpdated();

            if (!ShouldLogEntry(logLevel, domain))
            {
                return;
            }

            var serilogLogLevel = GetLogEventLevelFromRockLogLevel(logLevel);

            if (_logger != null && _logger != Serilog.Core.Logger.None)
            {
                _logger?.Write(serilogLogLevel, GetMessageTemplateWithDomain(messageTemplate), domain.ToUpper());
                if (_logger == null || _logger == Serilog.Core.Logger.None)
                {
                    // It is possible that it wrote depending on exact timing, but
                    // this could happen if there are Reads (From the Rock Logs block) and writes happening at *exactly* the same time
                    System.Diagnostics.Debug.WriteLine($"Might not have written to _logger due to read/write conflict.");
                }
            }
            else
            {
                // This could happen if there are Reads (From the Rock Logs block) and writes happening at exactly the same time
                System.Diagnostics.Debug.WriteLine($"Didn't write to _logger due to read/write conflict.");
            }
        }
Example #2
0
        private bool ShouldLogEntry(RockLogLevel logLevel, string domain)
        {
            if (logLevel > LogConfiguration.LogLevel || logLevel == RockLogLevel.Off)
            {
                return(false);
            }

            if (!_domains.Contains(domain.ToUpper()))
            {
                return(false);
            }
            return(true);
        }
Example #3
0
        /// <summary>
        /// Writes to log.
        /// </summary>
        /// <param name="logLevel">The log level.</param>
        /// <param name="exception">The exception.</param>
        /// <param name="domain">The domain.</param>
        /// <param name="messageTemplate">The message template.</param>
        /// <param name="propertyValues">The property values.</param>
        public void WriteToLog(RockLogLevel logLevel, Exception exception, string domain, string messageTemplate, params object[] propertyValues)
        {
            EnsureLoggerExistsAndUpdated();

            if (!ShouldLogEntry(logLevel, domain))
            {
                return;
            }

            var serilogLogLevel = GetLogEventLevelFromRockLogLevel(logLevel);

            _logger.Write(serilogLogLevel, exception, GetMessageTemplateWithDomain(messageTemplate), AddDomainToObjectArray(propertyValues, domain.ToUpper()));
        }
Example #4
0
        /// <summary>
        /// Writes to log.
        /// </summary>
        /// <param name="logLevel">The log level.</param>
        /// <param name="exception">The exception.</param>
        /// <param name="domain">The domain.</param>
        /// <param name="messageTemplate">The message template.</param>
        public void WriteToLog(RockLogLevel logLevel, Exception exception, string domain, string messageTemplate)
        {
            EnsureLoggerExistsAndUpdated();

            if (!ShouldLogEntry(logLevel, domain))
            {
                return;
            }

            var serilogLogLevel = GetLogEventLevelFromRockLogLevel(logLevel);

            _logger.Write(serilogLogLevel, exception, GetMessageTemplateWithDomain(messageTemplate), domain.ToUpper());
        }
Example #5
0
        private Serilog.Events.LogEventLevel GetLogEventLevelFromRockLogLevel(RockLogLevel logLevel)
        {
            switch (logLevel)
            {
            case (RockLogLevel.Error):
                return(Serilog.Events.LogEventLevel.Error);

            case (RockLogLevel.Warning):
                return(Serilog.Events.LogEventLevel.Warning);

            case (RockLogLevel.Info):
                return(Serilog.Events.LogEventLevel.Information);

            case (RockLogLevel.Debug):
                return(Serilog.Events.LogEventLevel.Debug);

            case (RockLogLevel.All):
                return(Serilog.Events.LogEventLevel.Verbose);

            default:
                return(Serilog.Events.LogEventLevel.Fatal);
            }
        }
Example #6
0
 /// <summary>
 /// Writes to log.
 /// </summary>
 /// <param name="logLevel">The log level.</param>
 /// <param name="exception">The exception.</param>
 /// <param name="messageTemplate">The message template.</param>
 /// <param name="propertyValues">The property values.</param>
 public void WriteToLog(RockLogLevel logLevel, Exception exception, string messageTemplate, params object[] propertyValues)
 {
     WriteToLog(logLevel, exception, DEFAULT_DOMAIN, messageTemplate, propertyValues);
 }
Example #7
0
 /// <summary>
 /// Writes to log.
 /// </summary>
 /// <param name="logLevel">The log level.</param>
 /// <param name="exception">The exception.</param>
 /// <param name="messageTemplate">The message template.</param>
 public void WriteToLog(RockLogLevel logLevel, Exception exception, string messageTemplate)
 {
     WriteToLog(logLevel, exception, DEFAULT_DOMAIN, messageTemplate);
 }
Example #8
0
        private IRockLogger GetTestLogger(string logFolder = "", List <string> domainsToLog = null, RockLogLevel logLevel = RockLogLevel.All, int numberOfLogFiles = 2, int logSize = 1)
        {
            if (string.IsNullOrWhiteSpace(logFolder))
            {
                logFolder = LogFolder;
            }

            if (domainsToLog == null)
            {
                domainsToLog = new List <string> {
                    "OTHER", "crm"
                };
            }

            var config = new RockLogConfiguration
            {
                LogLevel         = logLevel,
                MaxFileSize      = logSize,
                NumberOfLogFiles = numberOfLogFiles,
                DomainsToLog     = domainsToLog,
                LogPath          = $"{logFolder}\\{Guid.NewGuid()}.log",
                LastUpdated      = RockDateTime.Now
            };

            return(ReflectionHelper.InstantiateInternalObject <IRockLogger>("Rock.Logging.RockLoggerSerilog", config));
        }
Example #9
0
        public static void SaveRockLogConfiguration(List <string> domainsToLog = null, RockLogLevel logLevel = RockLogLevel.Off, int maxFileSize = 0, int maxFiles = 0)
        {
            if (domainsToLog == null)
            {
                domainsToLog = new List <string> {
                    RockLogDomains.Other
                };
            }

            var logConfig = new RockLogSystemSettings
            {
                LogLevel         = logLevel,
                DomainsToLog     = domainsToLog,
                MaxFileSize      = maxFileSize,
                NumberOfLogFiles = maxFiles
            };

            Rock.Web.SystemSettings.SetValue(SystemSetting.ROCK_LOGGING_SETTINGS, logConfig.ToJson());
        }