views:

954

answers:

6

I am using log4net in my .NET 3.5 console application and would like the log messages I generate to be seen in both the console standard out and the RollingFileAppender. The file output is working like a charm, but I am seeing a stream of status messages flowing to the console standard out when I execute. I would like to skip all the status information and only see the same messages I am programmatically generating to the log file.

Here is an example of what I see after I run my app:

log4net: XmlHierarchyConfigurator: Configuration update mode [Merge].
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Loading Appender [Console] type: [log4net.Appender.ConsoleAppender]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]

and it keeps on going until it describes the whole instantiation of the logger object.

How do I turn this off? Can I? I've tried all sorts of config file settings, but nothing makes these go away! Grrr...

+1  A: 

Please try to replicate the problem using a new project one step at the time (first reference log4net with no appender, then with the console appender, then with both appenders). If it shows the same behavior, please post the complete config of log4net.

Also you could try using the configuration samples from log4net Config Examples page.

Edit: This could be the cause of those messages: How do I enable log4net internal debugging.

alexandrul
A: 

Well, it does say that the root logger level is set to DEBUG. Without access to your configuration file or the code from which the logging is initiated, I would guess that you're implicitly using the default values for the root logger, which

  1. Goes to the command line (stdout), and
  2. is DEBUG by default
Steen
A: 

please look at log4net faq. they realy have all those common pitfalls you might encounter.

Orentet
A: 

Could you provide what your log4net config section looks like, or at least how you have it configured? My best guess is that this answer is correct in that you have log4net internal debugging configured. Either that or you're have the source of log4net in your project and you're compiling it with your own code. That would cause it to pick up your configurations and run it the same way.

Agent_9191
+2  A: 

I just went through this same problem (which, unsurprisingly, is how I found this question).

Anyway, my problem, and possibly yours as well, was caused by a web/app config file setting of "<log4net debug=true>". Too obvious, right? I had pasted the skeleton of my app.config settings in from a web snippet, and had focused on the appenders, not really giving the root log4net element a second glance. But there you have it. This is in the FAQ, but again other things caught my eye and not this attribute.

JustinB
A: 

set debug = false

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net debug="false">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="your file name" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
      </layout>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
</configuration>
Ashwani Roy