Hey I have this configuration in my web.config
One gotcha for this type of thing is to make sure to add the XmlConfigurator
attribute to the assembly by placing the following line in your AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator]
Otherwise log4net never activates.
Here is my checklist for when log4net is proving to be recalcitrant:
I've had experiences where logging systems fail silently without raising exceptions. I suppose this makes sense because if the logger is logging errors then how can it log an error that it's unable to perform logging?
So if the file isn't created on disk, start by looking into file system permissions to ensure the user your application is running under can write a new file to that disk location.
For testing purposes you might want to manually create the file on disk that should be written to and open up permissions for everybody to write to it. If the logger starts writing to it then you know it's permission based rather than configuration based.
These are the steps which eventually got my file logging working:
<appender name="MainLogger"...
<layout type="log4net.Layout.SimpleLayout"/>
<add key="log4net.Internal.Debug" value="true"/>
to your appSettings
.There is another small gotcha, see here: http://logging.apache.org/log4net/release/manual/configuration.html#dot-config
the [assembly: log4net.Config.XmlConfigurator]
method doesn't work with app.config. If you configure log4net from app.config, you must use the log4net.Config.XmlConfigurator.Configure()
method.
On my side, I forgot to mark the config file to be copied while the app is being compiled.
Just right click the log4net.config file, select property and then choose Copy to Output Directory to be Copy XXXX