2015-08-15 150 views
2

我使用log4net中的ILog對象在C#中創建日誌。我傳遞兩個參數1)存儲庫在哪裏它將創建日誌文件2)日誌文件的名稱,但它顯示異常,該目錄沒有定義,如果我只是通過傳遞日誌文件的名稱,程序運行成功,但我無法找到日誌文件。在c#中創建日誌#

這裏是我的代碼: -

private void createLogger(string Logdirectory) 
     { 
      if (Directory.Exists(Logdirectory)) 
      { 
       Log = LogManager.GetLogger(Logdirectory , LogFilename); 

      } 
      else 
      { 
       Log = LogManager.GetLogger(LogFilename); 

      } 
     } 

這裏是控制檯輸出: -

enter image description here 幫我找得到記錄器通過ILOG或通過任何其他方法,除了FILESTREAM的合適的方式

+0

單步執行代碼以查看LogFileName是什麼。另外,您可能會將完整的文件名路徑與logdirectory連接起來,在字符串中重複目錄名稱 – codingbiz

+0

您的做法無法正常工作。 LogManager.GetLogger(...)方法的字符串參數不指定日誌文件名稱或目錄。閱讀Log4Net文檔這些字符串參數的用途是什麼。要將日誌消息寫入文件,您需要設置一個所謂的FileAppender。查看Log4Net文檔或關於此主題的博客文章/教程之一(如[this one](https://codingsexy.wordpress.com/2013/07/07/log4net-code/)或[this one](http ://www.codeproject.com/Articles/140911/log-net-Tutorial)) – elgonzo

回答

0

閱讀文檔,log4net是非常易於配置和記錄的。

文檔:https://logging.apache.org/log4net/release/manual/configuration.html

using Com.Foo; // Import log4net classes. 
using log4net; 
using log4net.Config; 
public class MyApp 
{ // Define a static logger variable so that it references the // Logger instance named "MyApp". 
    private static readonly ILog log = LogManager.GetLogger(typeof(MyApp)); 
    static void Main(string[] args) 
    { // Set up a simple configuration that logs on the console. 
    BasicConfigurator.Configure(); 
    log.Info("Entering application."); 
    Bar bar = new Bar(); 
    bar.DoIt(); 
    log.Info("Exiting application."); 
} 
} 

中注意方法的不同爲獲得登錄實例。

  1. 你問一個ILog的當前類型不是一個明確的文件名
  2. 你告訴log4net的,從在app.config/web.config中
  3. 根據您的配置讀取配置設置您可能需要使用XmlConfigurator

的config文件的一個例子是:

<log4net> <!-- A1 is set to be a ConsoleAppender --> 
<appender name="A1" type="log4net.Appender.ConsoleAppender"> <!-- A1 uses PatternLayout --> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" /> 
    </layout> 
</appender> 
<!-- Set root logger level to DEBUG and its only appender to A1 --> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="A1" /> 
</root> 
</log4net> 

有很多Appender,上面是一個ConsoleAppender,但是一個DatabaseAppender存在,其他類型可能適合你。