2017-06-27 2 views
0

Ich habe versucht, die Debug-Protokolle zu ziehen und aus welchem ​​Grunde der Datei, kann ich nicht in meinem Web-App zum Laufen zu bringen log4net scheinen:nicht in der Lage log4net zu erhalten, zu schreiben

Meine Web.config sieht aus wie :

<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    https://go.microsoft.com/fwlink/?LinkId=169433 
    --> 


<configuration> 
<configSections> 
     <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" requirePermission="false" /> 
    </configSections> 

    <log4net> 
     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value ="%message" /> 
     </layout> 
     </appender> 

     <appender name="FileAppender" type="log4net.Appender.FileAppender" > 
     <file value ="C:\logs\testlog.txt" /> 
     <lockingModel type ="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value ="%message" /> 

     </layout> 
     </appender> 

     <root> 
     <level value ="DEBUG" /> 
    <appender-ref ref="ConsoleAppender" /> 
     <appender-ref ref="FileAppender" /> 
     </root> 
    </log4net> 

    <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 

</configuration> 

in meinem Service.asmx.cs:

public class Service : System.Web.Services.WebService 
{  

    public static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Service)); 

protected void Page_Load(object sender, EventArgs e) 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
    } 

Mein AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Control.ascx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
     //NOTE: This method will be invoked whenever ANY widget on the dashboard does a postback 
     log4net.Config.XmlConfigurator.Configure(); 
    } 

Ich habe alle Berechtigungen für den Protokollordner angegeben.

Das andere Element, das ich beachten wollte, ist, dass ich diesen genauen Code bekomme, um mit einer Standardkonsolenanwendung ohne Probleme zu arbeiten. Wenn ich jedoch versuche, es in meiner Web-App zu verwenden, habe ich kein Glück. Ich wollte auch sagen, dass dies ein Web-App-Widget ist, das Teil einer größeren Anwendung ist.

+0

[Aktivieren Sie log4net Debugging] (http://haacked.com/archive/2006/09/27/Log4Net_Troubleshooting.aspx/) und überprüfen Sie die Ausgabe. BTW Warum haben Sie zwei log4net ConfigSection Deklarationen? – stuartd

+0

Ja, ich hatte zwei .. eins für die lokale Web-App und ne für die Haupt-App. Danke fürs klarstellen –

Antwort

1

Eines Ihrer Probleme kann sein, dass Sie die folgenden in der Seite zu laden haben:

protected void Page_Load(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 

diese entfernen, weil Sie bereits ein Assembly-Attribut haben, das dies tut. Die Logger, die Sie verwenden, sind statische Variablen für die Klassen. Sie sollten nach dem Aufruf von configure initialisiert werden. In diesem Fall rufen Sie es vor configure (in Page_Load) auf.

Verwandte Themen