/// <summary>
        /// Loads an <see cref="Appender"/> based on the content of an appropriate Log4Net Config <see cref="XElement"/>.
        /// </summary>
        /// <param name="appenderElement">The <see cref="XElement"/> that represents an appender element.</param>
        private static Appender LoadAppenderFromElement(XElement appenderElement)
        {
            if (!appenderElement.Descendants().Any())
            {
                return(null);
            }

            AppenderType newAppenderType = AppenderType.RollingFileAppender;

            try
            {
                newAppenderType = LoadAppenderTypeFromElement(appenderElement);
            }
            catch
            {
                return(null);
            }

            Appender newAppender = new Appender
            {
                Type                 = newAppenderType,
                FolderPath           = LoadAppenderFolderPathFromElement(appenderElement),
                RollingFileNameMask  = LoadAppenderRollingFileMaskFromElement(appenderElement),
                StaticFileNameMask   = LoadAppenderStaticFileNameMaskFromElement(appenderElement),
                UseStaticLogFileName = LoadAppenderUseStaticLogFileNameFromElement(appenderElement),
                Layout               = LoadAppenderLayoutFromElement(appenderElement)
            };

            return(newAppender);
        }
Exemple #2
0
        public static void LoadAppenders(AppenderType type)
        {
            switch (type)
            {
            case AppenderType.Console:
                LoadAppenders(new ConsoleAppender());
                break;

            case AppenderType.GUI:
                LoadAppenders(GUIAppender.Instance);
                break;

            case AppenderType.MobileGUI:
                LoadAppenders(MobileGUIAppender.Instance);
                break;

            case AppenderType.File:
                LoadAppenders(FileAppender.Instance);
                break;

            case AppenderType.Window:
                LoadAppenders(new WindowAppender());
                break;
            }
        }
Exemple #3
0
 private bool AreEqual(AppenderDescriptor descriptor, string name, AppenderType type, string typeNamespace, string elementName)
 {
     return(descriptor.Name == name &&
            descriptor.Type == type &&
            descriptor.TypeNamespace == typeNamespace &&
            descriptor.ElementName == elementName);
 }
Exemple #4
0
        public void UnloadAppenders(AppenderType type)
        {
            if (!allAppender.ContainsKey(type))
            {
                return;
            }

            UnloadAppenders(allAppender.GetValue(type));
        }
        /// <summary>
        /// Add an appender to the logger
        /// </summary>
        /// <param name="type">The appender type</param>
        /// <param name="clazz">The appender class</param>
        /// <param name="name">The name of the appender</param>
        /// <returns>IAppender</returns>
        public IAppender AddAppender(AppenderType type, Type clazz, string name = null)
        {
            if (!this.AppenderList.IsAnAppenderName(name))
            {
                // Create a new appender
                IAppender appender = this.CreateAppender(type, clazz, name);
                this.AddAppender(appender);

                return(appender);
            }
            else
            {
                return(null);
            }
        }
        /// <summary>
        /// Create a new appender from its type.
        /// </summary>
        /// <param name="type">The appender type</param>
        /// <param name="clazz">Class of the appender</param>
        /// <param name="name">Name of the appender</param>
        /// <returns>IAppender</returns>
        public IAppender CreateAppender(AppenderType type, Type clazz, string name)
        {
            switch (type)
            {
            case AppenderType.MESSAGE_BOX_CUSTOM:

                var d1     = typeof(MessageBoxCustomAppender <>);
                var makeme = d1.MakeGenericType(clazz);

                return(Activator.CreateInstance(makeme, name) as IAppender);

            default:
                return(new ConsoleAppender(name));
            }
        }
        /// <summary>
        /// Create a new appender from its type.
        /// </summary>
        /// <param name="type">The appender type</param>
        /// <param name="name">Tha appender name</param>
        /// <returns>IAppender</returns>
        public IAppender CreateAppender(AppenderType type, string name)
        {
            switch (type)
            {
            case AppenderType.CONSOLE:
                return(new ConsoleAppender(name));

            case AppenderType.MESSAGE_BOX:
                return(new MessageBoxAppender(name));

            case AppenderType.TOAST:
                return(new ToastAppender(name));

            case AppenderType.DATABASE:
                return(new DataBaseAppender(name));

            case AppenderType.FILE:
                return(new FileAppender(name));

            default:
                return(new ConsoleAppender(name));
            }
        }
Exemple #8
0
 public void EachAppender_ShouldHaveCorrectAppenderField(string name, AppenderType type, string typeNamespace, string elementName)
 {
     mAppenders.Single(a => AreEqual((AppenderDescriptor)a.GetValue(null), name, type, typeNamespace, elementName));
 }
Exemple #9
0
    static void CreateAppenderFromConfig(string appenderName)
    {
        if (string.IsNullOrEmpty(appenderName))
        {
            return;
        }

        string options = ConfigMgr.GetDefaultValue(appenderName, "");
        var    tokens  = new StringArray(options, ',');
        string name    = appenderName.Substring(9);

        if (tokens.Length < 2)
        {
            Console.WriteLine("Log.CreateAppenderFromConfig: Wrong configuration for appender {0}. Config line: {1}", name, options);
            return;
        }

        AppenderFlags flags = AppenderFlags.None;
        AppenderType  type  = (AppenderType)uint.Parse(tokens[0]);
        LogLevel      level = (LogLevel)uint.Parse(tokens[1]);

        if (level > LogLevel.Fatal)
        {
            Console.WriteLine("Log.CreateAppenderFromConfig: Wrong Log Level {0} for appender {1}\n", level, name);
            return;
        }

        if (tokens.Length > 2)
        {
            flags = (AppenderFlags)uint.Parse(tokens[2]);
        }

        byte id = NextAppenderId();

        switch (type)
        {
        case AppenderType.Console:
        {
            var appender = new ConsoleAppender(id, name, level, flags);
            appenders[id] = appender;
            break;
        }

        case AppenderType.File:
        {
            string filename;
            if (tokens.Length < 4)
            {
                if (name != "Server")
                {
                    Console.WriteLine("Log.CreateAppenderFromConfig: Missing file name for appender {0}", name);
                    return;
                }

                filename = Process.GetCurrentProcess().ProcessName + ".log";
            }
            else
            {
                filename = tokens[3];
            }

            appenders[id] = new FileAppender(id, name, level, filename, m_logsDir, flags);
            break;
        }

        case AppenderType.DB:
        {
            appenders[id] = new DBAppender(id, name, level);
            break;
        }

        default:
            Console.WriteLine("Log.CreateAppenderFromConfig: Unknown type {0} for appender {1}", type, name);
            break;
        }
    }
Exemple #10
0
 private AppenderDescriptor(string name, AppenderType type, string typeNamespace)
     : base(name, "appender", typeNamespace)
 {
     Type = type;
 }
        public void SynchronousAppender_Send_MeasurePerformance(int bufferSize, int messageCount, AppenderType appenderType)
        {
            // Arrange
            var appender = new MyBufferedAppender
            {
                BufferSize = bufferSize,
                SendAsync  = appenderType == AppenderType.Asynchronous
            };

            appender.ActivateOptions();

            ConfigureAppender(appender);

            var logger = LogManager.GetLogger(this.GetType());

            // Act
            var stopWatch = new Stopwatch();

            stopWatch.Start();
            for (int i = 0; i < messageCount; i++)
            {
                logger.Info(Guid.NewGuid().ToString());
            }
            stopWatch.Stop();

            StopApplication();

            // Assert
            if (MessageSink.Logs.Count != messageCount)
            {
                // Give it time to finish sending
                Thread.Sleep(2000);
            }

            Assert.That(MessageSink.Logs.Count, Is.EqualTo(messageCount), "Not all the messages were sent!");

            Console.WriteLine("Type:{3}|BufferSize:{0}|MessageCount:{1}|Time(seconds):{2}", bufferSize, messageCount, stopWatch.Elapsed.TotalSeconds, appenderType);
        }
Exemple #12
0
 public static void UnloadAppenders(AppenderType type)
 {
     Logging.Instance.UnloadAppenders(type);
 }
Exemple #13
0
 /// <summary>
 /// Add an appender from AppenderType.
 /// </summary>
 /// <param name="appenderType">Type of the appender</param>
 /// <param name="appenderName">Name of the appender</param>
 /// <returns>IAppender</returns>
 public IAppender AddAppender(AppenderType appenderType, string appenderName = null)
 {
     return(this.AppenderManager.AddAppender(appenderType, appenderName));
 }
Exemple #14
0
 /// <summary>
 /// Remove all appenders from the given type
 /// </summary>
 /// <param name="appenderType">Type of appender to remove</param>
 public void RemoveAppender(AppenderType appenderType)
 {
     this.AppenderManager.Detach(appenderType);
 }
Exemple #15
0
        private void CreateAppenderFromConfig(string?appenderName)
        {
            if (string.IsNullOrEmpty(appenderName))
            {
                return;
            }

            // Format = type, level, flags, optional1, optional2
            // if type = File. optional1 = file and option2 = mode
            // if type = Console. optional1 = Color
            var options = sConfigMgr.GetStringDefault(appenderName, "");

            var tokens = options.Split(',', StringSplitOptions.TrimEntries);

            var size = tokens.Length;
            var name = appenderName.Substring(9);

            if (size < 2)
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Wrong configuration for appender {0}. Config line: {1}", name, options));
                return;
            }

            AppenderFlags flags = APPENDER_FLAGS_NONE;
            AppenderType  type  = APPENDER_INVALID;

            Enum.TryParse <AppenderType>(tokens[0], out type);

            LogLevel level = LOG_LEVEL_INVALID;

            Enum.TryParse <LogLevel>(tokens[1], out level);

            if (!_appenderFactory.TryGetValue((byte)type, out var factoryFunction))
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Unknown type '{0}' for appender {1}", tokens[0], name));
                return;
            }

            if (level > NUM_ENABLED_LOG_LEVELS)
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Wrong Log Level '{0}' for appender {1}", tokens[1], name));
                return;
            }

            if (size > 2)
            {
                if (byte.TryParse(tokens[2], out var flagsVal))
                {
                    flags = (AppenderFlags)flagsVal;
                }
                else
                {
                    Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Unknown flags '{0}' for appender {1}", tokens[2], name));
                    return;
                }
            }

            try
            {
                var appender = factoryFunction(NextAppenderId(), name, level, flags, tokens);
                _appenders[appender.Id] = appender;
            }
            catch (InvalidAppenderArgsException ex)
            {
                Console.Error.WriteLine(ex);
            }
        }
Exemple #16
0
 public void EachAppender_ShouldBeFoundByTypeNamespace(string name, AppenderType type, string typeNamespace, string elementName)
 {
     Assert.IsTrue(AppenderDescriptor.TryFindByTypeNamespace(typeNamespace, out AppenderDescriptor appender));
     Assert.IsTrue(AreEqual(appender, name, type, typeNamespace, elementName));
 }
Exemple #17
0
        /// <summary>
        /// Detach all appender from a type
        /// </summary>
        /// <param name="type">The appender type</param>
        public void Detach(AppenderType type)
        {
            List <IAppender> appenders = this.appenderList.ToList <IAppender>();

            appenders.RemoveAll(app => app.AppenderType == type);
        }
Exemple #18
0
 /// <summary>
 /// Retrieves an enumerable of <see cref="Appender"/>s based on their <see cref="AppenderType"/>
 /// </summary>
 /// <param name="appenderType">The <see cref="AppenderType"/> to retrieve <see cref="Appender"/>s for.</param>
 public IEnumerable <Appender> AppendersOfType(AppenderType appenderType)
 {
     return(Appenders.Where(a => a.Type == appenderType));
 }