<
appender name
=
"
FileAppender
"
type
=
"
log4net.Appender.FileAppender
"
>
< file value = " log-file.txt " />
< dateOn value = " true " />
< appendToFile value = " true " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %date [%thread] %-5level %logger [%ndc] - %message%newline " />
</ layout >
</ appender >
< file value = " log-file.txt " />
< dateOn value = " true " />
< appendToFile value = " true " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %date [%thread] %-5level %logger [%ndc] - %message%newline " />
</ layout >
</ appender >
修改的文件有: FileAppender.cs , AppenderAttachedImpl.cs , XmlHierarchyConfigurator.cs
FileAppender.cs 的修改如下:
1) 增加两个属性,如下:
private
bool
m_dateOn;
/**/ /// <summary>
/// 功能:当为真时,日志将以日期为单位来命名日志文件
/// </summary>
public bool DateOn
{
get { return m_dateOn; }
set { m_dateOn = value; }
}
private string m_logFileName;
/**/ /// <summary>
/// 日志文件名
/// </summary>
public string LogFileName
{
get { return m_logFileName; }
set { m_logFileName = value; }
}
2)修改方法:ActivateOptions() 把m_fileName换成m_logFileName
/**/ /// <summary>
/// 功能:当为真时,日志将以日期为单位来命名日志文件
/// </summary>
public bool DateOn
{
get { return m_dateOn; }
set { m_dateOn = value; }
}
private string m_logFileName;
/**/ /// <summary>
/// 日志文件名
/// </summary>
public string LogFileName
{
get { return m_logFileName; }
set { m_logFileName = value; }
}
3) 修改方法:Reset() 把m_fileName换成m_logFileName
AppenderAttachedImpl.cs的修改如下:
1)添加方法,如下:
/**/
/// <summary>
/// 产生日志文件名
/// </summary>
/// <returns></returns>
private string CreateLogName()
{
return DateTime.Now.ToString("yyyyMMdd");
}
/// 产生日志文件名
/// </summary>
/// <returns></returns>
private string CreateLogName()
{
return DateTime.Now.ToString("yyyyMMdd");
}
2)修改方法:AppendLoopOnAppenders(LoggingEvent loggingEvent) 在代码:appender.DoAppend(loggingEvent);前面添加如下代码:
if
(appender.Name
==
"
FileAppender
"
)
{
if(((FileAppender)(appender)).DateOn) //是否打开以日期来产生日志文件的功能
{
((FileAppender)(appender)).LogFileName = this.CreateLogName()+"_"+((FileAppender)(appender)).File;
}
else
{
((FileAppender)(appender)).LogFileName = ((FileAppender)(appender)).File;
}
((FileAppender)(appender)).ActivateOptions();
}
{
if(((FileAppender)(appender)).DateOn) //是否打开以日期来产生日志文件的功能
{
((FileAppender)(appender)).LogFileName = this.CreateLogName()+"_"+((FileAppender)(appender)).File;
}
else
{
((FileAppender)(appender)).LogFileName = ((FileAppender)(appender)).File;
}
((FileAppender)(appender)).ActivateOptions();
}
XmlHierarchyConfigurator.cs的修改如下:
1)修改方法:ParseAppender(XmlElement appenderElement) 把原来的代码:
IOptionHandler optionHandler
=
appender
as
IOptionHandler;
if (optionHandler != null )
{
optionHandler.ActivateOptions();
}
替换成如下的代码:(过滤掉FileAppender)
if (optionHandler != null )
{
optionHandler.ActivateOptions();
}
if
(appender.Name
!=
"
FileAppender
"
)
{
IOptionHandler optionHandler = appender as IOptionHandler;
if (optionHandler != null)
{
optionHandler.ActivateOptions();
}
}
这样,log4net的改进就完成了。改进后感觉挺好用的,呵呵!
{
IOptionHandler optionHandler = appender as IOptionHandler;
if (optionHandler != null)
{
optionHandler.ActivateOptions();
}
}
以上是个人的改进心得,希望给有同样需求的朋友有所帮助!