0
我的Web配置的網絡API如下RollingAppander總是返回null而不是值
<appender name="MyLogger" type="log4net.Appender.RollingFileAppender">
<file value="RenameFileInCode.txt" />
<appendToFile value="true" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="5" />
<!-- rollingStyle value="Size" /-->
<rollingStyle value="Date" />
<threshold value="DEBUG" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger %newline%message%newline%exception%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="ERROR" />
</filter>
</appender>
和我的方法處理例。就像下面
public static void MaintainLog(string objname, Exception e)
{
//string LogName = objname + ".txt";
string LogName = "SCRMpro_Log.txt";
var user = UserManager.GetUserById(WebUtility.GetCurrentUserId());
string filePath = GetClientWiseFilePath(user, "LOG"); //"//ErrorLogFile//";
filePath = filePath + LogName;
// Bind to the root hierarchy of log4net
log4net.Repository.Hierarchy.Hierarchy root =
log4net.LogManager.GetRepository()
as log4net.Repository.Hierarchy.Hierarchy;
if (root != null)
{
// Bind to the RollingFileAppender
log4net.Appender.RollingFileAppender rfa =
(log4net.Appender.RollingFileAppender)root.Root.GetAppender("RollingLogFileAppender");
if (rfa != null)
{
// Assign the value to the appender
rfa.File = System.Web.HttpContext.Current.Server.MapPath(filePath);
// Apply changes to the appender
rfa.ActivateOptions();
}
}
,在這種方法我不能夠得到RollingFileAppander價值的總是空
log4net.Appender.RollingFileAppender rfa =
(log4net.Appender.RollingFileAppender)root.Root.GetAppender("RollingLogFileAppender");
任何人都可以有這個解決方案大加讚賞。
最可能的原因是,你還沒有加載的log4net的配置。如果你有,你需要調試它:在root.Root.GetAppender(「MyLogger」)調用上設置一個斷點,查看記錄器,看它是否已經加載了appender並且b)它有你期望的名字。呵呵,通常的做法是像LogManager.GetRepository()。GetAppenders()。OfType()。FirstOrDefault()' –
stuartd