好的,所以我了解了如何在我的应用程序中配置 log4Net
,但是现在
首先 如果应用程序是发布版或调试版,我想通过区分日志级别来改进配置,我该怎么做?
第二,如果我的项目中有一个名为LOG
的文件夹,我该如何设置配置,而不是使用我的应用程序的物理文件夹?
例如代替:
<file value="C:\physicalpath\LOG\Log.log" />
用过
<file value="\LOG\Log.log" />
或
<file value="%some_variable%\LOG\Log.log" />
最佳答案
文档很简单:
file: the full or relative path to the log file.
因此,您只需要完整路径,如 C:\physicalpath\LOG\Log.log
或相对路径,这需要以 dot char .
开头,如 .\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>
nodes 并且只使用一个,<root>
节点然后只配置你想使用的那个......
这里是一个完整配置,有 2 个 Mongo Appender 和 1 个 File 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>
关于c# - 为asp.net MVC3项目配置log4net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838440/