1
我有以下代碼:默認log4net的配置
public Log4NetLogger()
: base(LogLevel.Debug)
{
if(!LogManager.GetRepository().Configured)
{
lock(mLocker)
{
if(!LogManager.GetRepository().Configured)
{
XmlConfigurator.Configure();
}
}
}
mLog4NetInstance = LogManager.GetLogger(typeof(Log4NetLogger));
}
用下面的web.config:
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\MaMLog_" />
<appendToFile value="true" />
<StaticLogFileAppName value="false" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMMdd_dddd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd MMM yyyy HH:mm:ss,fff} [%thread] -() %message%newline" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
<logger name="MyLog1">
<level value="Debug" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
<logger name="MyLog2">
<level value="Debug" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>
怎樣的代碼知道記錄器的名字嗎?如果有的話?
'YourNameSpace.Log4NetLogger' - >然後我有t o如果我不願意使用''或者說啓動項目足夠多的話,那麼爲我的sln中的每個程序集定義一個記錄器? –
如果您使用GetLogger(typeof(xxx)),那麼您可以使用命名空間的第一部分(不必與程序集名稱相關)。如果你的命名空間是MyCompany.MyProduct,那麼log4net將爲MyCompany.MyProduct.Log4NetLogger尋找一個記錄器,如果沒有找到它,它將爲MyCompany.MyProduct,然後MyCompany和最後的根記錄器尋找一個記錄器。 – sgmoore