This page describes approaches to configuration employed in Vostok.Logging.
There's no such thing as a log factory or log provider: there are just ILog instances, and the only way to get one initially is to instantiate one of the available implementations in code. Everything else is achieved with decorator-based extensions and interface methods:
Combining multiple logs into one.
Filtering incoming events.
Enriching incoming events with properties.
Obtaining log instances tied to specific source context.
This approach may look unfamiliar to prior log4net users experienced with XML configuration files. Indeed, it lacks additional flexibility offered by file-based configs but enables much easier setup for new applications.
It's preferable to inject log instances explicitly through constructors, either using a DI container or simply passing them manually. Static log provider may be sufficient for simple applications, though.
Individual log instances (such as console log or file log) are typically configured in code by passing a settings object. However, some implementations (namely file log) also accept an arbitrary settings provider delegate that can be used to configure from external sources using Vostok.Configuration library.
Also, simple filtering and enrichment rules can be supplied from external configuration.