How to track down log4net problems

Viewed 94063

I use log4net all the time, but one thing I've never figured out is how to tell what's going on on the inside. For example, I've got a console appender and a database appender in my project. I made a few changes to the database and the code, and now the database appender doesn't work anymore. I'll figure out why eventually, but it would help a lot if I could see what's going on inside log4net.

Does log4net generate any kind of output that I can view to try to determine the source of my problem?

6 Answers

First you have to set this value on the application configuration file:

<configuration>
   <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
   </appSettings>
</configuration>

Then, to determine the file in which you want to save the output you can add the following code in the same .config file:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>

You can find a more detailed explanation under 'How do I enable log4net internal debugging?' in the log4net FAQ page.

If the internal log doesn't give you enough information, it's very easy to build and debug the source code. If you don't want to mix this up with your development project, add a simple console application which just logs a message, copy your project's log4net.config to this application, and debug the class in question.

In log4net 2.0.8 it seems not to be possible to make the logging with log4net in a separate DLL. If I tried this, the results are very strange: No logging is performed anymore. And the initialization of log4net with the debug option shows no Errors.

Like K0D4 said, you should have a reference to log4net in your main-module and should it call once on the start of the Programm and all is fine.

In the next version of log4net, this bug will be probably be fixed.

Related