Атрибут имени файла оценивается только один раз при создании конфигурации. Атрибут filePattern оценивается при каждом переходе. Поиск, такой как поиск по дате, который вы используете, может оцениваться несколько раз. Первая оценка происходит, когда оценивается конфигурация, поэтому все ваши запросы $ {date} проверяются при создании конфигурации. Однако, если поиск закодирован как $$ {date}, то первая оценка просто удалит начальный '$'. Затем, когда шаблон оценивается на каждом пролонгации, поиск по дате разрешается в соответствии с текущей датой.
Если вы хотите, чтобы текущий файл регистрировался в каталоге с текущей датой, тогда лучше всего использовать DirectWriteRolloverStrategy . Это может быть достигнуто простым удалением атрибута fileName, в этом случае журналы будут записываться в файл, соответствующий текущему шаблону файла. В вашем случае это выглядело бы как
<RollingFile name="DailyLog"
filePattern="${baseDir}/$${date:yyyyMM}/$${date:dd}/daily.%d{yyyy-MM-dd}.%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}{UTC} %level: %msg %n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 MB"/>
<TimeBasedTriggeringPolicy interval="1" modulate="false"/>
</Policies>
</RollingFile>