Skip to content

Configuration in Code

adrianluisgonzalez edited this page Oct 19, 2012 · 1 revision

slf4net allows configuration in code via the slf4net.LoggerFactory class SetResolverFactory(IFactoryResolver resolver) static method.

Using an IoC container, you can configure the LoggerFactory like this:

        private void InitLogging(IContainer container)
        {
            // Get logger from the container and set the resolver
            var factory = container.Resolve<ILoggerFactory>();
            var resolver = new SimpleFactoryResolver(factory);
            LoggerFactory.SetFactoryResolver(resolver);
        }

If you want to programmatically use the log4net ILoggerFactory, that can be done like this:

        private void InitLogging()
        {
            // Create log4net ILoggerFactory and set the resolver
            var factory = new slf4net.log4net.Log4netLoggerFactory();
            var resolver = new SimpleFactoryResolver(factory);
            LoggerFactory.SetFactoryResolver(resolver);
        }

The class SimpleFactoryResolver implements the IFactoryResolver interface like this:

    using slf4net;

    namespace slf4net.Samples
    {

        /// <summary>
        /// A simple implementation of IFactoryResolver
        /// </summary>
        public class SimpleFactoryResolver : IFactoryResolver
        {
            private ILoggerFactory _factory;

            /// <summary>
            /// The constructor takes the ILoggerFactory to be used by slf4net
            /// </summary>
            public SimpleFactoryResolver(ILoggerFactory factory)
            {
                _factory = factory;
            }

            /// <summary>
            /// IFactoryResolver GetFactory() implementation
            /// </summary>
            public ILoggerFactory GetFactory()
            {
                return _factory;
            }
        }

    }
Clone this wiki locally