GNU sed recognizes both \n and \s. However, \s means "any whitespace character", it matches at least a space, a newline (aka line feed), a tab, a form feed, a vertical tab and a carriage return, but likely more in your locale. It is equivalent to the standard [[:space:]] character class. Since it is not one character but many, it cannot be used on the right hand side of the replacement operator since it is ambiguous and sed wouldn't know what you want to insert. It works fine on the left hand side though:
$ printf '[space]: [tab]:\t[CR]:\r[FF]\f\n'
[FF]ce]: [tab]: [CR]:
$ printf '[space]: [tab]:\t[CR]:\r[FF]\f\n' | sed 's/\s/MATCH/g'
[space]:MATCH[tab]:MATCH[CR]:MATCH[FF]MATCH
$
Also, you can use a simple space, there is no need to escape it:
$ printf '%s\n' {1..4} | sed -E 's/^(.{1})/Day \1/'
Day 1
Day 2
Day 3
Day 4
Next, GNU sed recognizes newline characters just fine, I just don't understand how they are relevant here. The $ means "match the end of the line". You could replace that with a \n if you want. For example:
$ printf '%s\n' {1..4} | sed -zE 's/(.)\n/\1.log\n/g'
1.log
2.log
3.log
4.log
It just doesn't seem relevant to the user case in your question. Finally, you could do the whole thing in a single operation:
$ printf '%s\n' {1..4} | sed -E 's/(.)/Day \1.log/'
Day 1.log
Day 2.log
Day 3.log
Day 4.log
On a final note, it is almost never a good idea to parse the output of ls as that will break on even slightly strange file names. Not really relevant in the specific case you mention, but you should avoid it in general.