2011-10-27 30 views
0

我們在我們的UI層中成功使用了log4net,但是當我們在Webservice層中測試時,它不起作用。web服務中的log4net問題

這裏是UI層的代碼:

public partial class _Default : System.Web.UI.Page 
{ 

    ILog logger = log4net.LogManager.GetLogger(typeof(_Default)); 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     ServiceReference1.IService1 is1 = new ServiceReference1.Service1Client(); 
     is1.GetData(1); 

     logger.Info("Hello Nine Thanks for use Log4Net,This is info message"); 
     logger.Debug("Hello Nine Thanks for use Log4Net,This is Debug message"); 
     logger.Error("Hello Nine Thanks for use Log4Net,This is Error message"); 
     logger.Warn("Hello Nine Thanks for use Log4Net,This is Warn message"); 
     logger.Fatal("Hello Nine Thanks for use Log4Net,This is Fatal message"); 

    } 
} 

下面是UI層的web.config設置:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="MyloggerSite2.log"/> <!-- This is logging in app root folder --> 

     <param name="AppendToFile" value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-2p %c [%x] - %m%n"/> 

     </layout> 
    </appender> 
    <root> 
    <level value="All"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
</log4net> 

這裏是ServiceLayer代碼哪個不起作用,雖然它與上面最一樣:

public class Service1 : IService1 
{ 
    public string GetData(int value) 
    { 
     ILog logger = log4net.LogManager.GetLogger(typeof(Service1)); 

     logger.Info("Hello Nine Thanks for use Log4Net,This is info message"); 
     logger.Debug("Hello Nine Thanks for use Log4Net,This is Debug message"); 
     logger.Error("Hello Nine Thanks for use Log4Net,This is Error message"); 
     logger.Warn("Hello Nine Thanks for use Log4Net,This is Warn message"); 
     logger.Fatal("Hello Nine Thanks for use Log4Net,This is Fatal message"); 

     return string.Format("You entered: {0}", value); 
    } 
} 

如果您有任何建議,請讓我知道。 謝謝, ñ

回答

3

你log4net的配置,例如通過在你的Web服務有一個像這樣的屬性:

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

感謝Stefan的迴應。我已經添加了這樣的類和方法,但不知道你的意思是這樣的:[assembly:log4net.Config.XmlConfigurator(Watch = true)] public class Service1:IService1 { [assembly:log4net。 Config.XmlConfigurator(Watch = true)] 公共字符串GetData(int值) {但沒有運氣 –

+0

我認爲這將清楚如何使用程序集級屬性......但你似乎已經知道它是如何工作的。 –

0

我剛纔在AssemblyInfo.cs中手動添加此屬性:

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

它的工作原理。 謝謝。

-1

只需在服務項目的Web配置文件中添加以下程序集。

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

不是在web配置中,而是在AssemblyInfo.cs中,如前所述。 –