Double check that you have specified the multiline options in the proper location. I tested your multiline config against the sample log and it worked for me. The config should be intended like so:
filebeat.prospectors:
- paths:
- 'input.log'
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
(the important part is that multiline is at the same level as paths and the other prospector options)