You going to need custom rolling appender to handle your unique requirement.
First you will have create custom appender from RollingFileAppender, override AdjustFileBeforeAppend() method as below
public class CustomRollingAppender : RollingFileAppender
{
DateTime next = DateTime.Today;
public CustomRollingAppender()
{
}
protected override void AdjustFileBeforeAppend()
{
string file = File;
DateTime newDt = DateTime.Today;
if (next < newDt)
{
next = newDt.AddDays(1);
string rollDir = Path.Combine(Path.GetDirectoryName(file), DateTime.Today.ToString("yyyyMMdd"));
Directory.CreateDirectory(rollDir);
string toFile = Path.Combine(rollDir, String.Format("{0}_{1}", Path.GetFileName(file), DateTime.Today.ToString("yyyyMMdd")));
this.CloseFile();
RollFile(file, toFile);
SafeOpenFile(File, false);
}
base.AdjustFileBeforeAppend();
}
}
Finally configure it in app.config as below
<appender name="FileAppender" type="Log4NetTest1.CustomRollingAppender">
<file value="logs/error.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
<preserveLogFileNameExtension value="true" />
</appender>
PS: It is not 100% tested, please test it thoroughly before put it into PROD.
Hope it helps.