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...
I'm having the same problem as OP. In log4net.config I have set debug = false. I also have a single FileAppender set with a PatternLayout defined. When I usse log.Warn("test") I get the expected formatted results written to the expected txt file. However, I also get a more verbose string written to the console (stdout).
EDIT: The fix for me was to eliminate this line in my code BasicConfigurator.Configure(); Note that nothing explicitly telling log4net to write to both console and declared FileAppender was stated in my config. In fact, log4net debug=false was declared and the problem continued to persist. The example code on the log4net homepage carelessly invokes BasicConfigurator.Configure(); Although I do use log4net the library suffers from the same problems of many ambitious open source projects. Lengthy XML driven configurations exist to give developers thousands of options for a task that should really have a more streamlined interface available. Programmers don't tend to value each others time. We apply the "don't make me think" rule in our user interfaces but not in our machine interfaces. It's as if we scorn a core principle that is universal to good design. The complexities should be available to the developer, but a few hours shouldn't be lost to accomplish core functionality. Considering this I would say log4net is poorly designed. As with most software there's a lot of complexity for complexity sake. If the developers guiding the project were more talented the most common use case of the library (referencing then using it to log to a text file in the app folder) could be implemented with 5-10 minutes of expose without any previous knowledge. That's not the case because the interface design and the methodology for configuration. It spotlights the reason I hate the way most software engineers think. They are incapable of seeing the exponential value of simplicity for the most common use cases and instead assume the more puzzling they make the interface the more value it will add to other developers. They are driven by ego and ignorance. No wonder most are social outcast.
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.
please look at log4net faq. they realy have all those common pitfalls you might encounter.
set debug = false
In the app I inherited, there was the line:
Changing that to
false
fixed the problem.If you have this in your code:
Change it to: