2010-04-27 178 views
6

我不確定這是否是發佈此問題的正確論壇。但我只是希望這裏有人可能在過去使用過log4net,所以希望得到一些幫助。log4net日誌記錄沒有創建日誌文件

我正在使用log4net來記錄我的異常。配置設置是這樣的:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections> 
<log4net debug="false"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\Logs\sample.log" /> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="10"/> 
    <maximumFileSize value="10MB"/> 
    <staticLogFileName value="true"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level %date %logger.%method[line %line] - %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="INFO"/> 
    <appender-ref ref="RollingLogFileAppender"/> 
</root> 
</log4net> 
</configuration> 

我開始加入此配置的web.config,但是我得到一個錯誤(VS工作室找不到一個架構log4net-「找不到架構信息元素log4net「)。所以我跟着這個鏈接(Log4Net "Could not find schema information" messages),並在一個單獨的XML文件中配置我的設置並添加下面的代碼行中我AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlfile.xml", Watch = true)] 

而在實際的代碼,我把這個行:

public void CreateUser(String username, String password) 
{ 
try 
{ 
    log.Info("Inside createuser"); 
    //code for creating user 
} 
catch(exception e) 
{ 
    log.Info("something happened in create user", e); 
} 
} 

問題是日誌文件沒有被創建。我看不到C:\ Logs中的任何內容。有人可以告訴我我在做什麼錯嗎?

任何建議/輸入將是非常有益的。

謝謝大家提前。

回答

1

您的日誌文件未被創建可能是因爲ASPNET用戶沒有寫入C:\Logs\目錄的權限。確保您將ASPNET的完整權限授予您的應用程序想要創建日誌文件的任何地方。

6

我不能讓設置在Asembly.cs沒有在我的Global.asax中添加此來的Application_Start工作:

log4net.Config.XmlConfigurator.Configure(); 
+0

這將需要配置在app/web.config – 2010-04-27 18:24:57

+0

不一定。該方法有幾個可以使用的重載。 – jvilalta 2010-04-27 19:25:08

+0

我看到了,我有一個印象,你建議使用過載沒有參數... – 2010-04-28 06:33:55

1

所以您加載的配置文件,但你那麼喜歡設置日誌變量所以

private static readonly ILog log = LogManager.GetLogger(typeof(Program)); 
+0

是的,我正在這樣做 – 2010-04-27 16:30:51

0

除非你指定單獨的配置文件log4net的完整路徑預計文件將在返回的路徑:

System.AppDomain.CurrentDomain.BaseDirectory 

如果您有一個簡單的控制檯應用程序,這通常意味着包含程序集的目錄,但在其他情況下這不一定是真實的。有很多方法可以解決這個問題(參見我的回答here)。

要開始它可能會更容易將log4net配置回到app/web.config並忽略架構警告。如果日誌記錄工作正常,那麼您可以確定您沒有權限問題,並且可以轉到下一步以在外部文件中進行配置。

你在寫什麼類型的應用程序?也許我可以用我的答案更具體一點...

+0

謝謝你的迴應。我正在使用一項服務。現在這個問題已經解決了。顯然,在配置服務本身時出現了一些問題。一旦這個問題得到解決,其他一切工作。 – 2010-04-29 14:57:29