views:

177

answers:

2

So, we had a little ETL app that had some issues with updates. Which were nicely solved in an afternoon sprint with nHibernate. But this app relied upon log4net to push logging output to a few different destinations based upon command line switches. Once we got nHibernate wrapped into the app, it ETL'd flawlessly. But the logging functions failed completely. From the debugger's point of view, any of our loggers have all log4net's levels disabled.

Here's the log4net config:

<log4net>
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="import-" />
    <staticLogFileName value="false" />
    <appendToFile value="false" />
    <rollingStyle value="Date" />
    <maxSizeRollBackups value="5" />
    <datePattern value="yyyyMMdd-HHmm&quot;.log&quot;" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level - %message%newline" />
    </layout>
  </appender>

  <appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level : %message%newline" />
    </layout>
  </appender>

  <appender name="Email" type="log4net.Appender.SmtpAppender">
    <to value="[email protected]" />
    <from value="[email protected]" />
    <subject value="Cte Importer Error" />
    <smtpHost value="smtp.example.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%newline%date %-5level : %message%newline%newline%newline" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
  </root>

  <logger name="Console">
    <level value="INFO" />

    <appender-ref ref="Console" />
  </logger>
  <logger name="File">
    <level value="INFO" />
    <appender-ref ref="RollingFile" />
  </logger>
  <logger name="DebugConsole">
    <level value="DEBUG" />
    <appender-ref ref="Console" />
  </logger>
  <logger name="DebugFile">
    <level value="DEBUG" />
    <appender-ref ref="RollingFile" />
  </logger>
  <logger name="EmailErrors">
    <level value="ERROR" />
    <appender-ref ref="Email" />
  </logger>
</log4net>

Not sure what other code would help, but I'm happy to post anything else from this app.

A: 

You could try turning on the internal debugging in log4net: See this section in the following link:

"How do I enable log4net internal debugging?"

http://logging.apache.org/log4net/release/faq.html

Andy White
+2  A: 

What version of NHibernate are you using? Builds older than 1.0-RC1 turned logging on internally. In 1.0-RC1 they changed this so you have to manually call log4net.XmlConfigurator.Configure(). This was done to give developers more control over logging.

codeelegance
And we've found our huckaberry. Side note: you meant to say log4net.*Config*.XmlConfigurer.Configure();
Wyatt Barnett