/// <summary>
        /// Configures logging to a specified level, optionally directing log output to a particular
        /// IAppender instance.
        /// </summary>
        /// <param name="verbose">If true, informational messages should be logged.</param>
        /// <param name="debug">If true, diagnostic and trace-level messages should be logged.</param>
        /// <param name="appender">An IAppender to which log traffic should be directed. If absent, a default
        /// is used.</param>
        public static void Configure(bool verbose, bool debug, IAppender appender = null)
        {
            if (appender != null)
            {
                BasicConfigurator.Configure(appender);
            }
            else
            {
                // Just take the default
                BasicConfigurator.Configure();
            }

            var hierarchy = log4net.LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;

            if (debug)
            {
                hierarchy.Root.Level = log4net.Core.Level.Debug;
            }
            else if (verbose)
            {
                hierarchy.Root.Level = log4net.Core.Level.Info;
            }
            else
            {
                hierarchy.Root.Level = log4net.Core.Level.Error;
            }
        }
 private void AddAppenders(IAppender[] appenders)
 {
     foreach (IAppender appender in appenders)
     {
         this.Appenders.Add(appender);
     }
 }
Exemple #3
0
        public void AddAppender(IAppender appender)
        {
            Hierarchy hierarchy =
                    (Hierarchy)LogManager.GetRepository();

            hierarchy.Root.AddAppender(appender);
        }
Exemple #4
0
 public Logger(IAppender appender, IAppender appenderTwo, IAppender appenderThree)
 {
     this.appenders = new List<IAppender>();
     this.Appenders = appender;
     this.Appenders = appenderTwo;
     this.Appenders = appenderThree;
 }
		/// <summary>
		/// Add an appender to a logger.
		/// </summary>
		/// <param name="loggerName">Name of the logger.</param>
		/// <param name="appender">The appender.</param>
		public static void AddAppender( string loggerName, IAppender appender )
		{
			ILog log = LogManager.GetLogger( loggerName );
			var l = (Logger)log.Logger;

			l.AddAppender( appender );
		}
Exemple #6
0
 private void InitAppenders(IAppender[] appenders)
 {
     for (int i = 0; i < appenders.Length; i++)
     {
         this.appenders[i] = appenders[i];
     }
 }
        /*
        public static ILog MyLogger {
            get {
                return LogManager.GetLogger(MyLoggerName);
            }
        }
        */

        private static void AddAppender(string loggerName, IAppender appender) {
            var log = LogManager.GetLogger(loggerName);
            var logger = (Logger)log.Logger;

            logger.AddAppender(appender);
            logger.Repository.Configured = true;
        }
 public static void AddAppender(IAppender initAppender)
 {
     appender.Add(initAppender);
     foreach (ILog aLog in log)
     {
         ((Log)aLog).AddAppender(initAppender);
     }
 }
 private void SetAppenderFixFlags(IAppender appender)
 {
     var bufferingAppender = appender as BufferingAppenderSkeleton;
     if (bufferingAppender != null)
     {
         bufferingAppender.Fix = Fix;
     }
 }
Exemple #10
0
 public Logger(IAppender baseapender, params IAppender[] moreappenders)
 {
     this.Appenders = new List<IAppender>();
     this.Appenders.Add(baseapender);
     foreach (var appender in moreappenders)
     {
         this.Appenders.Add(appender);
     }
 }
        public FallbackAppenderProxyBase(IAppender appenderToWrap)
        {
            var convertedAppender = appenderToWrap as AppenderSkeleton;
            if (convertedAppender == null)
                throw new InvalidOperationException("cannot use IndefiniteAppenderProxy with an appender that does not inherit from AppenderSkeleton as it needs to hook into the IErrorHandler, to gather errors.");

            innerAppender = convertedAppender;
            errorHandler = new RecordingErrorHandler(GetType().Name);
            convertedAppender.ErrorHandler = errorHandler;
        }
        public void AddAppender(IAppender appender)
        {
            int size = this.Appenders.Length;
            int newSize = size + 1;

            IAppender[] tmp = new IAppender[newSize];
            Array.Copy(this.Appenders, 0, tmp, 0, size);

            this.Appenders = tmp;

            this.Appenders[newSize - 1] = appender;
        }
Exemple #13
0
        public void Dispose()
        {
            try
            {
                if (_appender != null)
                {
                    ((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository()).Root.RemoveAppender(_appender);

                }
            }
            catch
            { }
            _appender = null;
        }
Exemple #14
0
        public static void addLogAppender(IAppender appender)
        {
            if (appender == null)
            {
                string msg = UException.getExceptionMessage("AppGlobal", "addLogAppender", "An IAppender object is required");

                logAndThrowException(new ArgumentNullException(msg), msg);
            }

            loadLoggers();

            log4net.Repository.Hierarchy.Logger log = (log4net.Repository.Hierarchy.Logger)logger.Logger;

            log.AddAppender(appender);
        }
Exemple #15
0
        protected virtual void AddAppender(IAppender profilerAppender, IAppenderAttachable logger)
        {
            IAppender appender;
            do {
                appender = logger.GetAppender(profilerAppender.Name);
                if (appender != null) {
                    try {
                        logger.RemoveAppender(appender);
                    }
                    catch (Exception) { }
                }
            }
            while (appender != null);

            logger.AddAppender(profilerAppender);
        }
		/// <summary>
		/// Attaches an appender.
		/// </summary>
		/// <param name="newAppender">The appender to add.</param>
		/// <remarks>
		/// If the appender is already in the list it won't be added again.
		/// </remarks>
		public void AddAppender(IAppender newAppender) 
		{
			// Null values for newAppender parameter are strictly forbidden.
			if (newAppender == null)
			{
				throw new ArgumentNullException("newAppender");
			}
	
			if (m_appenderList == null) 
			{
				m_appenderList = new AppenderCollection(1);
			}
			if (!m_appenderList.Contains(newAppender))
			{
				m_appenderList.Add(newAppender);
			}
		}
        public OneHydraLogger(string loggerName, IConfigManagerHelper config)
        {
            var hier = LogManager.GetRepository() as Hierarchy;
            // If we have the setting in the configuration set the log level.  Otherwise, default to only errors and fatal
            // debug messages.
            if (hier != null)
            {
                var logLevel = hier.LevelMap["ERROR"];
                var configLogLevel = config.GetAppSetting("OneHydraLogLevel");
                if (configLogLevel != null)
                {
                    logLevel = hier.LevelMap[configLogLevel.ToUpper()];
                }

                // Only do this once when the first instance is created.  After that, the adoAppender should be available
                // to all subsequent instantiations.  We're also only setting the log level for the entire configuration once.
                // If subsequently, someone uses log4net and usurps the hierarchy in the architecture, it could change the log level.     
                lock (ConfigureLock)
                {
                    if (_adoAppender == null)
                    {
                        _adoAppender = GetAdoAppender(config);
                        log4net.Config.BasicConfigurator.Configure(_adoAppender);
                        ILogger[] loggers = hier.GetCurrentLoggers();
                        foreach (var logger in loggers)
                        {
                            ((Logger)logger).Level = logLevel;
                        }
                        //Configure the root logger.
                        Logger rootLogger = hier.Root;
                        rootLogger.Level = logLevel;
                    }

                }

                // Set the appender and log level for this instance.  We know they should already be configured.
                var loggerToConfigure = hier.GetLogger(loggerName, hier.LoggerFactory);
                if (loggerToConfigure != null)
                {
                    loggerToConfigure.Level = logLevel;
                    _logger = LogManager.GetLogger(loggerName);

                }
            }
        }
Exemple #18
0
        /// <summary>
        /// Add <paramref name="newAppender"/> to the list of appenders of this
        /// Logger instance.
        /// </summary>
        /// <param name="newAppender">An appender to add to this logger</param>
        /// <remarks>
        /// <para>
        /// Add <paramref name="newAppender"/> to the list of appenders of this
        /// Logger instance.
        /// </para>
        /// <para>
        /// If <paramref name="newAppender"/> is already in the list of
        /// appenders, then it won't be added again.
        /// </para>
        /// </remarks>
        virtual public void AddAppender(IAppender newAppender)
        {
            if (newAppender == null)
            {
                throw new ArgumentNullException("newAppender");
            }

            m_appenderLock.AcquireWriterLock();
            try {
                if (m_appenderAttachedImpl == null)
                {
                    m_appenderAttachedImpl = new GodLesZ.Library.Logging.Util.AppenderAttachedImpl();
                }
                m_appenderAttachedImpl.AddAppender(newAppender);
            } finally {
                m_appenderLock.ReleaseWriterLock();
            }
        }
        /// <summary>
        /// Inserts an element into the <c>AppenderCollection</c> at the specified index.
        /// </summary>
        /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
        /// <param name="item">The <see cref="IAppender"/> to insert.</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <para><paramref name="index"/> is less than zero.</para>
        /// <para>-or-</para>
        /// <para><paramref name="index"/> is equal to or greater than <see cref="AppenderCollection.Count"/>.</para>
        /// </exception>
        public virtual void Insert(int index, IAppender item)
        {
            this.ValidateIndex(index, true); // throws

            if (this.m_count == this.m_array.Length)
            {
                this.EnsureCapacity(this.m_count + 1);
            }

            if (index < this.m_count)
            {
                Array.Copy(this.m_array, index, this.m_array, index + 1, this.m_count - index);
            }

            this.m_array[index] = item;
            this.m_count++;
            this.m_version++;
        }
Exemple #20
0
        private BuilderContext(IBuilder builder, Builtin builtin, BuilderSettings settings, int depth, object owner, PluginTreeNode ownerNode)
        {
            _builder  = builder ?? throw new ArgumentNullException(nameof(builder));
            _builtin  = builtin ?? throw new ArgumentNullException(nameof(builtin));
            _appender = builder as IAppender;
            _settings = settings;

            _depth     = depth;
            _owner     = owner;
            _ownerNode = ownerNode;

            if (builtin.HasBehaviors)
            {
                _cancel = builtin.Behaviors.GetBehaviorValue <bool>(builtin.Scheme + ".break");
            }

            _syncRoot = new object();
        }
Exemple #21
0
        /// <summary>
        /// Attaches an appender.
        /// </summary>
        /// <param name="newAppender">The appender to add.</param>
        /// <remarks>
        /// <para>
        /// If the appender is already in the list it won't be added again.
        /// </para>
        /// </remarks>
        public void AddAppender(IAppender newAppender)
        {
            // Null values for newAppender parameter are strictly forbidden.
            if (newAppender == null)
            {
                throw new ArgumentNullException("newAppender");
            }

            m_appenderArray = null;
            if (m_appenderList == null)
            {
                m_appenderList = new AppenderCollection(1);
            }
            if (!m_appenderList.Contains(newAppender))
            {
                m_appenderList.Add(newAppender);
            }
        }
Exemple #22
0
        private IAppender[] ReadAppenders(int n)
        {
            IAppender[] appenders = new IAppender[n];

            for (int i = 0; i < n; i++)
            {
                string[]    appenderParts = reader.ReadLine().Split();
                string      appenderType  = appenderParts[0];
                string      layoutType    = appenderParts[1];
                ReportLevel reportLevel   = appenderParts.Length == 3 ? Enum.Parse <ReportLevel>(appenderParts[2], true) : ReportLevel.Info;

                ILayout   layout   = layoutFactory.CreateFactory(layoutType);
                IAppender appender = appenderFactory.CreateAppender(appenderType, layout, reportLevel);

                appenders[i] = appender;
            }
            return(appenders);
        }
Exemple #23
0
        /// <summary>
        /// 附加一个附加器.
        /// </summary>
        /// <param name="newAppender">要附加的附加器.</param>
        /// <remarks>
        /// <para>
        /// 如果存在则不再添加.
        /// </para>
        /// </remarks>
        public void AddAppender(IAppender newAppender)
        {
            if (newAppender == null)
            {
                throw new ArgumentNullException("没有附加器");
            }

            m_appenderArray = null;
            if (m_appenderList == null)
            {
                m_appenderList = new AppenderCollection(1);
            }

            if (!m_appenderList.Contains(newAppender))
            {
                m_appenderList.Add(newAppender);
            }
        }
        /// <summary>
        /// Inserts an element into the <c>AppenderCollection</c> at the specified index.
        /// </summary>
        /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
        /// <param name="item">The <see cref="IAppender"/> to insert.</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <para><paramref name="index"/> is less than zero</para>
        /// <para>-or-</para>
        /// <para><paramref name="index"/> is equal to or greater than <see cref="AppenderCollection.Count"/>.</para>
        /// </exception>
        public virtual void Insert(int index, IAppender item)
        {
            ValidateIndex(index, true);             // throws

            if (m_count == m_array.Length)
            {
                EnsureCapacity(m_count + 1);
            }

            if (index < m_count)
            {
                Array.Copy(m_array, index, m_array, index + 1, m_count - index);
            }

            m_array[index] = item;
            m_count++;
            m_version++;
        }
        /// <summary>
        /// Removes the element at the specified index of the <c>AppenderCollection</c>.
        /// </summary>
        /// <param name="index">The zero-based index of the element to remove.</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <para><paramref name="index"/> is less than zero</para>
        /// <para>-or-</para>
        /// <para><paramref name="index"/> is equal to or greater than <see cref="AppenderCollection.Count"/>.</para>
        /// </exception>
        public virtual void RemoveAt(int index)
        {
            ValidateIndex(index);             // throws

            m_count--;

            if (index < m_count)
            {
                Array.Copy(m_array, index + 1, m_array, index, m_count - index);
            }

            // We can't set the deleted entry equal to null, because it might be a value type.
            // Instead, we'll create an empty single-element array of the right type and copy it
            // over the entry we want to erase.
            IAppender[] temp = new IAppender[1];
            Array.Copy(temp, 0, m_array, m_count, 1);
            m_version++;
        }
Exemple #26
0
        public CedrusGame(IocBuilder builder)
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            builder.LogRegistrations();
            builder.RegisterModules(Assembly.GetExecutingAssembly(), type => type.FullName.EndsWith("Module"));

            builder.RegisterSingleton(c => graphics.GraphicsDevice);
            builder.RegisterSingleton(c => new GameSettings(Window));
            builder.RegisterSingleton(c => Content);
            EnumerateAssemblies(assembly => builder.RegisterSingletonSubclassesOf(assembly, typeof(CommonAssetBuilder)));

            container = builder.Build();

            gameTimeline = container.Resolve <GameTimeline>();
            Appender     = container.Resolve <IAppender>()[GetType()];
        }
        public void AddAppender(string[] args)
        {
            string      appenderType = args[0];
            string      layoutType   = args[1];
            ReportLevel reportLevel  = ReportLevel.INFO;

            if (args.Length == 3)
            {
                reportLevel = Enum.Parse <ReportLevel>(args[2]);
            }

            ILayout   layout   = this.layoutFactory.CretaeLayout(layoutType);
            IAppender appender = this.appenderFactory.CreateAppender(appenderType, layout);

            appender.ReportLevel = reportLevel;

            this.appenders.Add(appender);
        }
Exemple #28
0
        public OneHydraLogger(string loggerName, IConfigManagerHelper config)
        {
            var hier = LogManager.GetRepository() as Hierarchy;

            // If we have the setting in the configuration set the log level.  Otherwise, default to only errors and fatal
            // debug messages.
            if (hier != null)
            {
                var logLevel       = hier.LevelMap["ERROR"];
                var configLogLevel = config.GetAppSetting("OneHydraLogLevel");
                if (configLogLevel != null)
                {
                    logLevel = hier.LevelMap[configLogLevel.ToUpper()];
                }

                // Only do this once when the first instance is created.  After that, the adoAppender should be available
                // to all subsequent instantiations.  We're also only setting the log level for the entire configuration once.
                // If subsequently, someone uses log4net and usurps the hierarchy in the architecture, it could change the log level.
                lock (ConfigureLock)
                {
                    if (_adoAppender == null)
                    {
                        _adoAppender = GetAdoAppender(config);
                        log4net.Config.BasicConfigurator.Configure(_adoAppender);
                        ILogger[] loggers = hier.GetCurrentLoggers();
                        foreach (var logger in loggers)
                        {
                            ((Logger)logger).Level = logLevel;
                        }
                        //Configure the root logger.
                        Logger rootLogger = hier.Root;
                        rootLogger.Level = logLevel;
                    }
                }

                // Set the appender and log level for this instance.  We know they should already be configured.
                var loggerToConfigure = hier.GetLogger(loggerName, hier.LoggerFactory);
                if (loggerToConfigure != null)
                {
                    loggerToConfigure.Level = logLevel;
                    _logger = LogManager.GetLogger(loggerName);
                }
            }
        }
        /// <summary>
        /// Parses the children of a logger element.
        /// </summary>
        /// <param name="catElement">The category element.</param>
        /// <param name="log">The logger instance.</param>
        /// <param name="isRoot">Flag to indicate if the logger is the root logger.</param>
        /// <remarks>
        /// <para>
        /// Parse the child elements of a &lt;logger&gt; element.
        /// </para>
        /// </remarks>
        protected void ParseChildrenOfLoggerElement(XmlElement catElement, Logger log, bool isRoot)
        {
            // Remove all existing appenders from log. They will be
            // reconstructed if need be.
            log.RemoveAllAppenders();

            foreach (XmlNode currentNode in catElement.ChildNodes)
            {
                if (currentNode.NodeType == XmlNodeType.Element)
                {
                    XmlElement currentElement = (XmlElement)currentNode;

                    if (currentElement.LocalName == APPENDER_REF_TAG)
                    {
                        IAppender appender = FindAppenderByReference(currentElement);
                        string    refName  = currentElement.GetAttribute(REF_ATTR);
                        if (appender != null)
                        {
                            LogLog.Debug(declaringType, "Adding appender named [" + refName + "] to logger [" + log.Name + "].");
                            log.AddAppender(appender);
                        }
                        else
                        {
                            LogLog.Error(declaringType, "Appender named [" + refName + "] not found.");
                        }
                    }
                    else if (currentElement.LocalName == LEVEL_TAG || currentElement.LocalName == PRIORITY_TAG)
                    {
                        ParseLevel(currentElement, log, isRoot);
                    }
                    else
                    {
                        SetParameter(currentElement, log);
                    }
                }
            }

            IOptionHandler optionHandler = log as IOptionHandler;

            if (optionHandler != null)
            {
                optionHandler.ActivateOptions();
            }
        }
Exemple #30
0
        public IAppender CreateAppender(string[] args)
        {
            string appenderType = args[0];
            string layoutType   = args[1];

            LayoutFactory layoutFactory = new LayoutFactory();
            ILayout       layout        = layoutFactory.CreateLayout(layoutType);

            IAppender appender = null;

            if (args.Length == 2)
            {
                switch (appenderType)
                {
                case "ConsoleAppender": appender = new ConsoleAppender(layout); break;

                case "FileAppender": appender = new FileAppender(layout); break;

                default:
                    throw new ArgumentException("Invalid Appender Type!");
                }
            }
            else
            {
                string reportType = args[2];

                if (!Enum.TryParse(typeof(ReportLevel), reportType, true, out object reportLevelObj))
                {
                    throw new ArgumentException("Invalid Report Level!");
                }
                ReportLevel reportLevelThreshold = (ReportLevel)reportLevelObj;

                switch (appenderType)
                {
                case "ConsoleAppender": appender = new ConsoleAppender(layout, reportLevelThreshold); break;

                case "FileAppender": appender = new FileAppender(layout, reportLevelThreshold); break;

                default:
                    throw new ArgumentException("Invalid Appender Type!");
                }
            }
            return(appender);
        }
        /// <summary>
        /// Parse appenders by IDREF.
        /// </summary>
        /// <param name="appenderRef">The appender ref element.</param>
        /// <returns>The instance of the appender that the ref refers to.</returns>
        /// <remarks>
        /// <para>
        /// Parse an XML element that represents an appender and return
        /// the appender.
        /// </para>
        /// </remarks>
        protected IAppender FindAppenderByReference(XmlElement appenderRef)
        {
            string appenderName = appenderRef.GetAttribute(REF_ATTR);

            IAppender appender = (IAppender)this.m_appenderBag[appenderName];

            if (appender != null)
            {
                return(appender);
            }
            else
            {
                // Find the element with that id
                XmlElement element = null;

                if (appenderName != null && appenderName.Length > 0)
                {
                    foreach (XmlElement curAppenderElement in appenderRef.OwnerDocument.GetElementsByTagName(APPENDER_TAG))
                    {
                        if (curAppenderElement.GetAttribute("name") == appenderName)
                        {
                            element = curAppenderElement;
                            break;
                        }
                    }
                }

                if (element == null)
                {
                    LogLog.Error(declaringType, "XmlHierarchyConfigurator: No appender named [" + appenderName + "] could be found.");
                    return(null);
                }
                else
                {
                    appender = this.ParseAppender(element);
                    if (appender != null)
                    {
                        this.m_appenderBag[appenderName] = appender;
                    }

                    return(appender);
                }
            }
        }
        private void SetupLogger()
        {
            int numberOfAppenders = int.Parse(Console.ReadLine());

            ICollection <IAppender> appenders = new List <IAppender>();

            for (int i = 0; i < numberOfAppenders; i++)
            {
                string[] layoutArgs          = Console.ReadLine().Split();
                string   appenderType        = layoutArgs[0];
                string   layoutType          = layoutArgs[1];
                string   reportLevelAsString = layoutArgs.Length == 3 ? layoutArgs[2] : "info";

                ReportLevel reportLevel = this.reportLevelFactory.Create(reportLevelAsString);
                ILayout     layout      = this.layoutFactory.Create(layoutType);
                IAppender   appender    = this.appenderFactory.Create(appenderType, reportLevel, layout);
                this.logger.AddAppender(appender);
            }
        }
Exemple #33
0
        public IAppender CreateAppender(string appenderName, string layoutName)
        {
            Type[] types = Assembly.GetExecutingAssembly().GetTypes();

            ILayout layout = this.layoutFactory.CreateLayout(layoutName);

            Type appenderType = types.FirstOrDefault(t => t.Name.Equals(appenderName));

            if (appenderType == null)
            {
                throw new ArgumentException("Invalid Appender Type!");
            }

            IAppender appender = (IAppender)Activator.CreateInstance(appenderType, new object[] { layout });

            this.InjectDependencies(appenderType, appender);

            return(appender);
        }
Exemple #34
0
        public static void RemoveUdpAppender()
        {
            var repositroy = (Hierarchy)log4net.LogManager.GetRepository();

            if (!repositroy.Configured)
            {
                return;
            }

            var       root        = repositroy.Root;
            IAppender udpAppender = root.GetAppender("UdpAppender");

            if (null != udpAppender)
            {
                root.RemoveAppender(udpAppender);
                repositroy.Configured = true;
                repositroy.RaiseConfigurationChanged(EventArgs.Empty);
            }
        }
        public void AddAppender(string[] input)
        {
            var         typeAppender = input[0];
            var         typeLayout   = input[1];
            ReportLevel reportLevel  = ReportLevel.INFO;

            if (input.Length == 3)
            {
                reportLevel = Enum.Parse <ReportLevel>(input[2]);
            }

            ILayout layout = this.layoutFactory.CreateLayout(typeLayout);

            IAppender appender = this.appenderFactory.CreateAppender(typeAppender, layout);

            appender.ReportLevel = reportLevel;

            appenders.Add(appender);
        }
Exemple #36
0
        private void ParseInput()
        {
            int number = int.Parse(Console.ReadLine());

            for (int i = 0; i < number; i++)
            {
                string[]  inputParts = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                ILayout   layout     = this.layoutFactory.CreateLayout(inputParts[1]);
                IAppender appender   = this.appenderFactory.CreateAppender(inputParts[0], layout);

                if (inputParts.Length > 2)
                {
                    string reportLevel = this.GetTitleCase(inputParts[2]);
                    appender.ReportLevel = Enum.Parse <ReportLevel>(reportLevel);
                }

                this.appenders.Add(appender);
            }
        }
        /// <summary>
        /// Parse appenders by IDREF.
        /// </summary>
        /// <param name="appenderRef">The appender ref element.</param>
        /// <returns>The instance of the appender that the ref refers to.</returns>
        protected IAppender FindAppenderByReference(XmlElement appenderRef)
        {
            string appenderName = appenderRef.GetAttribute(REF_ATTR);

            IAppender appender = (IAppender)m_appenderBag[appenderName];

            if (appender != null)
            {
                return(appender);
            }
            else
            {
                // Find the element with that id
                XmlElement element = null;

                if (appenderName != null && appenderName.Length > 0)
                {
                    foreach (XmlNode node in appenderRef.OwnerDocument.GetElementsByTagName(APPENDER_TAG))
                    {
                        if (((XmlElement)node).GetAttribute("name") == appenderName)
                        {
                            element = (XmlElement)node;
                            break;
                        }
                    }
                }

                if (element == null)
                {
                    LogLog.Error("DOMConfigurator: No appender named [" + appenderName + "] could be found.");
                    return(null);
                }
                else
                {
                    appender = ParseAppender(element);
                    if (appender != null)
                    {
                        m_appenderBag[appenderName] = appender;
                    }
                    return(appender);
                }
            }
        }
Exemple #38
0
        private static void SetLogAppender(IAppender appender, Level level, bool additive)
        {
            Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;

            if (hierarchy != null)
            {
                if (!additive)
                {
                    hierarchy.Root.RemoveAllAppenders();
                }
                hierarchy.Root.AddAppender(appender);
                hierarchy.Threshold  = level;
                hierarchy.Configured = true;
            }
            else
            {
                throw new AdkException("Unable to initialize log4net framework", null);
            }
        }
Exemple #39
0
        public void Run()
        {
            int numOfAppenders = int.Parse(reader.ReadLine());

            for (int i = 0; i < numOfAppenders; i++)
            {
                var       infoArgs        = reader.ReadLine().Split();
                IAppender currentAppender = GetAppender(infoArgs);
                var       logger          = new Logger(currentAppender);
                loggersList.Add(logger);
            }

            var logInfo = reader.ReadLine().Split('|');

            while (logInfo[0] != "END")
            {
                var reportLevel = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(logInfo[0].ToLower());
                var date        = logInfo[1];
                var msg         = logInfo[2];
                var parameters  = new string[] { date, msg };
                foreach (var logger in this.loggersList)
                {
                    foreach (var method in loggerMethods.Where(n => n.Name == reportLevel))
                    {
                        method.Invoke(logger, parameters);
                    }
                }
                logInfo = reader.ReadLine().Split('|');
            }
            //Layout write

            foreach (var log in loggersList)
            {
                log.LayoutOutput();
            }

            writer.WriteLine("Logger info");

            foreach (var logger in loggersList)
            {
                logger.InfoSummary();
            }
        }
Exemple #40
0
        public void AddAppender(params string[] args)
        {
            string typeAppender = args[0];
            string typeLayout   = args[1];

            ILayout currentLayout = layoutFactory.GenerateLayout(typeLayout);

            ReportLevel level = ReportLevel.INFO;

            if (args.Length == 3)
            {
                Enum.TryParse(args[2], true, out ReportLevel lvl);

                level = lvl;
            }

            IAppender appender = appenderFactory.GenerateFactory(typeAppender, currentLayout, level);

            appenders.Add(appender);
        }
Exemple #41
0
        private void InjectDependencies(Type appenderType, IAppender appender)
        {
            FieldInfo[] appenderFields = appenderType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo[] factoryFields  = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

            foreach (FieldInfo appenderField in appenderFields)
            {
                if (appenderField.GetCustomAttributes(typeof(InjectAttribute)) == null)
                {
                    continue;
                }

                if (factoryFields.Any(ifield => ifield.FieldType.Equals(appenderField.FieldType)))
                {
                    string filePath = Path.Combine(Environment.CurrentDirectory, this.defaultFileName);
                    appenderField.SetValue(appender, filePath);
                    break;
                }
            }
        }
        public void AddAppender(params string[] arguments)
        {
            string typeAppender = arguments[0];
            string typeLayout   = arguments[1];

            ReportLevel reportLevel = ReportLevel.INFO;

            if (arguments.Length == 3)
            {
                reportLevel = Enum.Parse <ReportLevel>(arguments[2]);
            }

            ILayout layout = this.layoutFactory.CreateLayout(typeLayout);

            IAppender appender = this.appenderFactory.CreateAppender(typeAppender, layout);

            appender.ReportLevel = reportLevel;

            appenders.Add(appender);
        }
Exemple #43
0
 private static void CollectAppenders(ArrayList appenderList, IAppenderAttachable container)
 {
     AppenderCollection.IAppenderCollectionEnumerator enumerator = container.Appenders.GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             IAppender current = enumerator.Current;
             CollectAppender(appenderList, current);
         }
     }
     finally
     {
         IDisposable disposable = enumerator as IDisposable;
         if (disposable != null)
         {
             disposable.Dispose();
         }
     }
 }
        public static ICollection Configure(ILoggerRepository repository)
        {
            ArrayList items = new ArrayList();

            using (new LogLog.LogReceivedAdapter(items))
            {
                PatternLayout layout = new PatternLayout {
                    ConversionPattern = "%timestamp [%thread] %level %logger %ndc - %message%newline"
                };
                layout.ActivateOptions();
                ConsoleAppender appender = new ConsoleAppender {
                    Layout = layout
                };
                appender.ActivateOptions();
                IAppender[] appenders = new IAppender[] { appender };
                InternalConfigure(repository, appenders);
            }
            repository.ConfigurationMessages = items;
            return(items);
        }
        /// <summary>
        /// Parses an appender element.
        /// </summary>
        /// <param name="appenderElement">The appender element.</param>
        /// <returns>The appender instance or <c>null</c> when parsing failed.</returns>
        /// <remarks>
        /// <para>
        /// Parse an XML element that represents an appender and return
        /// the appender instance.
        /// </para>
        /// </remarks>
        protected IAppender ParseAppender(XmlElement appenderelement)
        {
            string appenderName = appenderelement.GetAttribute(NAME_ATTR);
            string typeName     = appenderelement.GetAttribute(TYPE_ATTR);

            try
            {
                IAppender appender = (IAppender)Activator.CreateInstance(SystemInfo.GetTypeFromString(typeName, true, true));
                appender.Name = appenderName;

                foreach (XmlNode currnode in appenderelement.ChildNodes)
                {
                    if (currnode.NodeType != XmlNodeType.Element)
                    {
                        continue;
                    }
                    if (currnode.LocalName == APPENDER_REF_TAG)
                    {
                    }
                    else
                    {
                        SetParameter((XmlElement)currnode, appender);
                    }
                }
                IOptionHandler optionHandler = appender as IOptionHandler;
                if (optionHandler != null)
                {
                    optionHandler.ActivateOptions();
                }

                LogLog.Debug(declaringType, "Created Appender [" + appenderName + "]");
                return(appender);
            }
            catch (Exception ex)
            {
                // Yes, it's ugly.  But all exceptions point to the same problem: we can't create an Appender

                LogLog.Error(declaringType, "Could not create Appender [" + appenderName + "] of type [" + typeName + "]. Reported error follows.", ex);
                return(null);
            }
        }
        private static void AddAppenders(List <IAppender> appenders, int numAppenders)
        {
            for (int i = 0; i < numAppenders; i++)
            {
                var appenderTokens = CreateStringArray(' ');

                var appenderType     = appenderTokens[0];
                var layoutType       = appenderTokens[1];
                var inputReportLevel = appenderTokens.Length > 2 ? appenderTokens[2] : string.Empty;

                ILayout   layout   = GetLayoutType(layoutType);
                IAppender appender = GetAppenderType(appenderType, layout);

                if (inputReportLevel != string.Empty)
                {
                    AssignAppenderMinLevel(inputReportLevel, appender);
                }

                appenders.Add(appender);
            }
        }
Exemple #47
0
    public IAppender[] ReadAppenders()
    {
        int appendersCount = int.Parse(this.inputReader.ReadLine());

        IAppender[] appenders = new IAppender[appendersCount];

        for (int i = 0; i < appendersCount; i++)
        {
            string[] appenderParams = this.inputReader
                                      .ReadLine()
                                      .Split(AppenderParamsSeparator);

            IAppender appender = this.appenderFactory.CreateAppender(
                appenderParams,
                this.layoutFactory);

            appenders[i] = appender;
        }

        return(appenders);
    }
Exemple #48
0
 public CommandManager(IPerformanceDatabase database, IAppender appender)
 {
     this.database = database;
     this.appender = appender;
 }
Exemple #49
0
		/// <summary>
		/// Remove the appender passed as parameter form the list of appenders.
		/// </summary>
		/// <param name="appender">The appender to remove</param>
		/// <returns>The appender removed from the list</returns>
		/// <remarks>
		/// <para>
		/// Remove the appender passed as parameter form the list of appenders.
		/// The appender removed is not closed.
		/// If you are discarding the appender you must call
		/// <see cref="IAppender.Close"/> on the appender removed.
		/// </para>
		/// </remarks>
		virtual public IAppender RemoveAppender(IAppender appender) 
		{
			m_appenderLock.AcquireWriterLock();
			try
			{
				if (appender != null && m_appenderAttachedImpl != null) 
				{
					return m_appenderAttachedImpl.RemoveAppender(appender);
				}
			}
			finally
			{
				m_appenderLock.ReleaseWriterLock();
			}
			return null;
		}
Exemple #50
0
		/// <summary>
		/// Add <paramref name="newAppender"/> to the list of appenders of this
		/// Logger instance.
		/// </summary>
		/// <param name="newAppender">An appender to add to this logger</param>
		/// <remarks>
		/// <para>
		/// Add <paramref name="newAppender"/> to the list of appenders of this
		/// Logger instance.
		/// </para>
		/// <para>
		/// If <paramref name="newAppender"/> is already in the list of
		/// appenders, then it won't be added again.
		/// </para>
		/// </remarks>
		virtual public void AddAppender(IAppender newAppender) 
		{
			if (newAppender == null)
			{
				throw new ArgumentNullException("newAppender");
			}

			m_appenderLock.AcquireWriterLock();
			try
			{
				if (m_appenderAttachedImpl == null) 
				{
					m_appenderAttachedImpl = new log4net.Util.AppenderAttachedImpl();
				}
				m_appenderAttachedImpl.AddAppender(newAppender);
			}
			finally
			{
				m_appenderLock.ReleaseWriterLock();
			}
		}
		/// <summary>
		/// Removes the specified appender from the list of appenders.
		/// </summary>
		/// <param name="appender">The appender to remove.</param>
		/// <returns>The appender removed from the list</returns>
		/// <remarks>
		/// The appender removed is not closed.
		/// If you are discarding the appender you must call
		/// <see cref="IAppender.Close"/> on the appender removed.
		/// </remarks>
		virtual public IAppender RemoveAppender(IAppender appender) 
		{
			lock(this)
			{
				if (appender != null && m_appenderAttachedImpl != null) 
				{
					return m_appenderAttachedImpl.RemoveAppender(appender);
				}
			}
			return null;
		}
		/// <summary>
		/// Adds an <see cref="IAppender" /> to the list of appenders of this
		/// instance.
		/// </summary>
		/// <param name="newAppender">The <see cref="IAppender" /> to add to this appender.</param>
		/// <remarks>
		/// <para>
		/// If the specified <see cref="IAppender" /> is already in the list of
		/// appenders, then it won't be added again.
		/// </para>
		/// </remarks>
		virtual public void AddAppender(IAppender newAppender) 
		{
			if (newAppender == null)
			{
				throw new ArgumentNullException("newAppender");
			}
			lock(this)
			{
				if (m_appenderAttachedImpl == null) 
				{
					m_appenderAttachedImpl = new log4net.Util.AppenderAttachedImpl();
				}
				m_appenderAttachedImpl.AddAppender(newAppender);
			}
		}
			public override int AddRange(IAppender[] x)
			{
				throw new NotSupportedException("This is a Read Only Collection and can not be modified");
			}
			public override void Remove(IAppender x)
			{
				throw new NotSupportedException("This is a Read Only Collection and can not be modified");
			}
			public override int IndexOf(IAppender x)
			{
				return m_collection.IndexOf(x);
			}
			public override bool Contains(IAppender x)
			{
				return m_collection.Contains(x);
			}
			public override void CopyTo(IAppender[] array, int start)
			{
				m_collection.CopyTo(array,start);
			}
			public override void CopyTo(IAppender[] array)
			{
				m_collection.CopyTo(array);
			}
		/// <summary>
		/// Return the collection elements as an array
		/// </summary>
		/// <returns>the array</returns>
		public virtual IAppender[] ToArray()
		{
			IAppender[] resultArray = new IAppender[m_count];
			if (m_count > 0)
			{
				Array.Copy(m_array, 0, resultArray, 0, m_count);
			}
			return resultArray;
		}
		/// <summary>
		/// Adds the elements of a <see cref="IAppender"/> array to the current <c>AppenderCollection</c>.
		/// </summary>
		/// <param name="x">The <see cref="IAppender"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
		/// <returns>The new <see cref="AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
		public virtual int AddRange(IAppender[] x)
		{
			if (m_count + x.Length >= m_array.Length)
			{
				EnsureCapacity(m_count + x.Length);
			}

			Array.Copy(x, 0, m_array, m_count, x.Length);
			m_count += x.Length;
			m_version++;

			return m_count;
		}