好的,所以我理解如何在我的应用程序中配置log4Net
,但现在
首先我希望通过区分日志级别来改进配置,如果应用程序是发布或调试,我该怎么做?
第二次,如果我的项目中有一个名为LOG
的文件夹,如何设置配置,不使用我的应用程序的物理文件夹?
例如代替:
<file value="C:\physicalpath\LOG\Log.log" />
使用
<file value="\LOG\Log.log" />
或
<file value="%some_variable%\LOG\Log.log" />
答案 0 :(得分:22)
该文件是直截了当的:
文件:日志文件的完整路径或相对路径。
所以你需要拥有的是完整的路径,如C:\physicalpath\LOG\Log.log
或相对路径,这需要从点字符 .
开始,如.\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个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>
答案 1 :(得分:4)
请记住,您可以在Global.asax.cs中添加以下代码:
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
//...more code
}
答案 2 :(得分:0)
以下是app.config
部分示例,其中路径是通过<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>