logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ron Grabowski <rongrabow...@yahoo.com>
Subject Re: Cannot create log from vb.net class library .dll
Date Tue, 17 Apr 2007 22:14:07 GMT

I'd recommend turning on internal log4net logging. It may be because your FileAppender is
attempting to write to '\windows\system32\GenericInterface.log' instead of where you really
want it to. Adding this code to your App.Config will tell log4net to log its internal errors
to System.Diagnostics.Trace which will be captured to a file:

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

----- Original Message ----

From: "Dahl, Scott (CMA Consulting)" <sdahl@cma.com>

To: log4net-user@logging.apache.org

Sent: Tuesday, April 17, 2007 5:55:08 PM

Subject: Cannot create log from vb.net class library .dll



Here’s a stripped down version of the current class library dll code:

     

   Imports System.IO

     

   ' We want this assembly to have a seperate logging repository to the 

   ' rest of the application. We will configure this repository seperatly.

   '<Assembly: log4net.Config.AliasRepository("trafficRouter.trafficRouter")> 

   '<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 

     

   Public Class trafficRouter

       Private db As New dbConnection

       ' Create a logger for use in this class

       Private Shared ReadOnly l As log4net.ILog = log4net.LogManager.GetLogger("default")

     

       Public Sub New()

           Try

               log4net.Config.XmlConfigurator.Configure()

               'log4net.Config.XmlConfigurator.ConfigureAndWatch(New FileInfo("c:\\ xyz.config"))

               l.Info("Creating Traffic Router.")

               dbConnect()

               l.Info("Done creating Traffic Router.")

           Catch ex As Exception

               l.Error(ex)

           End Try

       End Sub

   End Class

     

   This is the web.config file for the web service which is logging correctly:

   <?xml version="1.0"?>

   <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0";>

       <configSections>

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

       </configSections>

       <appSettings/>

       <!-- This section contains the log4net configuration settings -->

       <log4net>

         <!-- Define some output appenders -->

         <appender name="LogFileAppender" type="log4net.Appender.FileAppender">

           <file value=".\\GenericInterface.log" />

           <appendToFile value="true" />

           <layout type="log4net.Layout.PatternLayout">

             <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"
/>

           </layout>

         </appender>

     

         <logger name="default">

           <level value="ALL" />

           <appender-ref ref="LogFileAppender" />

         </logger>

       </log4net>  

       <connectionStrings/>

       <system.web>

           <compilation debug="false" />

           <authentication mode="Windows" />

       </system.web>

   </configuration>

     

   Here is the “custom config” I tried using for the class library log:

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

   <configuration>

       <system.diagnostics>

           <sources>

               <!-- This section defines the logging configuration for My.Application.Log
-->

               <source name="DefaultSource" switchName="DefaultSwitch">

               </source>

           </sources>

           <switches>

               <add name="DefaultSwitch" value="Information" />

           </switches>

       </system.diagnostics>

     

     <!-- Register a section handler for the log4net section -->

     <configSections>

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

     </configSections>

     <!-- This section contains the log4net configuration settings -->

       <log4net>

         <!-- Define some output appenders -->

         <appender name="LogFileAppender" type="log4net.Appender.FileAppender">

           <file value=".\\trafficRouter.log" />

           <appendToFile value="true" />

           <layout type="log4net.Layout.PatternLayout">

             <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"
/>

           </layout>

         </appender>

     

         <logger name="default">

           <level value="ALL" />

           <appender-ref ref="LogFileAppender" />

         </logger>

       </log4net>

   </configuration>

     

   I’ve come across a few suggestions but none of those have helped at all.  This is what
I’ve tried different from the current code:

   1)       Explicitly call the log4net.Config.XmlConfigurator.ConfigureAndWatch function,
passing my custom configuration above, in the constructor.

   2)       Setting an alias repository using: Assembly: log4net.Config.AliasRepository("trafficRouter.trafficRouter")>
and Assembly: log4net.Config.AliasRepository("trafficRouter")>

   3)       Uncommenting the other assembly line from the class.

     

   I’m pretty new to .net and log4net so please excuse me if I’ve stumbled with some terminology
or overlooked the obvious.   

     

   Thanks,

   Scott

     

   

  








Mime
View raw message