2012-01-12 79 views
16

好了,我明白瞭如何通過差分日誌如果的級別配置在我的應用程序log4Net,但現在的asp.net MVC3項目配置log4net的

首先我想提高配置該應用程序是發行版或調試版,我該如何做到這一點?

,如果我有叫LOG哪能設置的配置,以不使用我的應用程序的物理文件夾在我的項目文件夾?

例如代替:

<file value="C:\physicalpath\LOG\Log.log" /> 

使用

<file value="\LOG\Log.log" /> 

<file value="%some_variable%\LOG\Log.log" /> 
+5

如果您要登錄到應用程序中的文件夾,請注意攻擊者可以查看內容o在這個文件夾中加入一點猜測,並查看有關您的應用的敏感信息。要麼使該文件夾在IIS管理器中不可見(刪除讀取權限),要麼將該文件夾置於Web根目錄之外。 – 2012-01-12 17:33:24

回答

21

一個很好的資源的documenation是直截了當:

文件:完整或相對路徑的日誌文件。

因此,所有你需要的是像C:\physicalpath\LOG\Log.log或ralative一個完整的路徑,這需要先從點炭..\App_Data\Log4Net.Logs

您還可以在使用文件夾名稱file屬性,那麼你必須使用datePattern屬性指定的文件名,例如:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value=".\\App_Data\\Log4Net.Logs\\backend"/> 
    <datePattern value=".yyyy-MM-dd'.log'"/> 
    <appendToFile value="true"/> 
    <maximumFileSize value="256KB"/> 
    <maxSizeRollBackups value="2"/> 
    <rollingStyle value="Date"/> 
    <staticLogFileName value="false"/> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%level %thread %logger - %message%newline"/> 
    </layout> 
</appender> 

還記得添加

<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 

所以你可以避免log4net鎖定文件,你不能用它來添加郵件。

如果你不習慣log4net,不要忘記添加<root>節點,這是它可以讓log4net知道你想用什麼,而不是<appender>節點,例如,你可以有10的一個<appender>節點並只使用一個,<root>節點然後僅配置爲您要使用的節點...


這裏是一個完整配置 2個蒙戈附加目的地和1個文件的Appender中,<root>規定,只有文件附加器在使用中:

<log4net> 
    <appender name="MongoAppender" type="log4net.Appender.MongoDBAppender, log4mongo-net"> 
     <!-- MongoDB 1 connection options --> 
     <host value="staff.mongohq.com"/> 
     <port value="10077"/> 
     <databaseName value="myApp_2011"/> 
     <collectionName value="logs_net"/> 
     <userName value="myself"/> 
     <password value="123456"/> 
    </appender> 
    <appender name="MongoAppenderAppHarbor" type="log4net.Appender.MongoDBAppender, log4mongo-net"> 
     <!-- MongoDB 2 connection options --> 
     <host value="staff.mongohq.com"/> 
     <port value="10048"/> 
     <databaseName value="d1741d63-46b1-4a44-9c49-8c28cecae36b"/> 
     <collectionName value="logs_net"/> 
     <userName value="myself"/> 
     <password value="123456"/> 
    </appender> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <!-- Local file options --> 
     <file value=".\\App_Data\\Log4Net.Logs\\backend"/> 
     <datePattern value=".yyyy-MM-dd'.log'"/> 
     <appendToFile value="true"/> 
     <maximumFileSize value="256KB"/> 
     <maxSizeRollBackups value="2"/> 
     <rollingStyle value="Date"/> 
     <staticLogFileName value="false"/> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level %thread %logger - %message%newline"/> 
     </layout> 
    </appender> 
    <root> 
     <!-- 
     <level value="DEBUG" /> 
     <appender-ref ref="MongoAppender" /> 
     <appender-ref ref="MongoAppenderAppHarbor" /> 
     --> 
     <appender-ref ref="FileAppender"/> 
    </root> 
    </log4net> 
+0

嗨,謝謝你問我確定我明白我的疑問與物理路徑有關,但是你的完整配置是你對我的第一個關於兩個配置bot釋放和調試的關注的建議???。謝謝 – Jorge 2012-01-12 18:52:24

+0

不,不,這是我自己的實現(除了登錄數據)...所以,**有兩個不同的問題**在你的問題。你可以請**分開**,並在這裏發佈新的網址。讓這個爲「如何使用相對路徑」,並創建一個新的請求如何使用不同的模式... – balexandre 2012-01-12 19:42:39

+0

我更新了我的問題,並再次感謝 – Jorge 2012-01-12 20:30:10

0

下面是一個示例app.config截面,其中該路徑被defin通過<file value="somepath"/>標籤進行編輯。

This link是文檔

<log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\\SOMEPATH\\SOMELOG.log"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="10"/> 
    <maximumFileSize value="10MB"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger – %message%exception%newline"/> 
    </layout>  
</appender> 
<root> 
    <level value="ALL"/> 
    <appender-ref ref="RollingFileAppender"/> 
</root>  
</log4net> 
3

記住也許你應該在全球增加.asax.cs的以下代碼:

protected void Application_Start() 
{ 
      log4net.Config.XmlConfigurator.Configure(); 

} 
+0

哪個做什麼? – quantum 2012-10-20 01:43:14