2010-05-12 104 views
56

當我將文件值設置爲logs\log-file.txt時,它會在哪裏創建該文件夾?在/bin目錄中?log4net將在哪裏創建此日誌文件?

我的web.config文件看起來是這樣的:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

這是登錄正確的方法:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

您能否接受其中一個答案是正確的?謝謝 – 2017-09-12 09:27:22

回答

18

文件值可以是像一個絕對路徑爲「C:\日誌\ log.txt「或我相信相對於bin目錄的相對路徑。

至於落實的話,我通常發生在任何類的頂部,下面我打算登錄:最後

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

,你可以用它像這樣:

Log.Debug("This is a DEBUG level message."); 
+1

嗯..它似乎沒有創建任何地方的日誌文件,我沒有得到任何錯誤? – Blankman 2010-05-12 03:37:34

+2

聽起來像一個權限問題。我會將配置映射到您的Web目錄之外的絕對路徑。之後,確保日誌文件和文件夾具有權限,以允許asp.net工作進程正確訪問。 – 2010-05-12 03:52:22

+0

對於相對路徑,我喜歡日誌文件在項目級別: 2015-01-26 15:24:11

0

我認爲你的示例保存到你的項目文件夾中,除非默認的iis或.NET用戶已經創建了權限,否則它將無法創建日誌文件夾。

我會首先創建日誌文件夾,並允許IIS用戶完全權限,並查看是否正在創建日誌文件。

4

對於日誌文件夾和文件的東西,去@Bens answer

雖然我會評論創建日誌部分。伊莫沒有正確的方式。當手工編寫記錄器時,我會按照自己的方式進行:

ILog logger = LogManager.GetLogger(typeof(CCController)); 

因爲它簡短而簡潔。

這麼說,我不創建記錄器實例的類內,這些天,I let my IoC container inject it for me

9

Log4net正在保存到您的項目文件夾中。如:\SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt

其中:

  • SolutionFolder是您保存您的解決方案
  • ProjectFolder是文件夾在您的項目住到解決方案和
  • SolutionConfiguration是contais項目的所有二進制文件的文件夾(默認爲調試或釋放)

希望這有助於!

42

如果你希望你的日誌文件是在一個指定的位置,這將在運行時決定可能那麼你的項目輸出目錄的地方,你可以配置你以這種方式

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

然後.config文件條目呼籲log4net configure之前的代碼,設置如下圖所示

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

如何簡單的是它的新路徑? :)

+1

大把戲,它可以幫助把所有的配置放在一個地方:) – 2015-10-09 06:42:34

32

它會在您的項目/解決方案的根目錄下創建文件。

您可以在應用程序的web.config中指定選擇的位置如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

文件標籤指定的位置。

+7

+1直接回答問題的唯一答案「 log4net將在哪裏創建這個日誌文件?「 – Keith 2014-05-27 19:03:13

+0

嗨Oladipo,我沒有路徑定義日誌是在bin文件夾中創建的。 – Pompair 2017-03-29 09:47:56

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender");