 <p>Read the documentation, log4net is very configurable and well documented.</p> <p>Documentation: <a href="https://logging.apache.org/log4net/release/manual/configuration.html" rel="nofollow">https://logging.apache.org/log4net/release/manual/configuration.html</a></p> <pre><code>using Com.Foo; // Import log4net classes. using log4net; using log4net.Config; public class MyApp { // Define a static logger variable so that it references the // Logger instance named "MyApp". private static readonly ILog log = LogManager.GetLogger(typeof(MyApp)); static void Main(string[] args) { // Set up a simple configuration that logs on the console. BasicConfigurator.Configure(); log.Info("Entering application."); Bar bar = new Bar(); bar.DoIt(); log.Info("Exiting application."); } } </code></pre> <p>Take note the difference in the method for getting to log instance.</p> <ol> <li>You're asking for an ILog for the current Type not an explicitly a filename</li> <li>You're telling log4net to read configuration settings from the app.config/web.config</li> <li>Depending on your config you may need to use the XmlConfigurator</li> </ol> <p>An example of the .config file is:</p> <pre><code>&lt;log4net&gt; &lt;!-- A1 is set to be a ConsoleAppender --&gt; &lt;appender name="A1" type="log4net.Appender.ConsoleAppender"&gt; &lt;!-- A1 uses PatternLayout --&gt; &lt;layout type="log4net.Layout.PatternLayout"&gt; &lt;conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" /&gt; &lt;/layout&gt; &lt;/appender&gt; &lt;!-- Set root logger level to DEBUG and its only appender to A1 --&gt; &lt;root&gt; &lt;level value="DEBUG" /&gt; &lt;appender-ref ref="A1" /&gt; &lt;/root&gt; &lt;/log4net&gt; </code></pre> <p>There are lots of Appenders, above is a ConsoleAppender, but a DatabaseAppender exists and other types that might fit with you're need.</p>