I have logrotate running as a daily cron job, plus rsyslog has rate limiting enabled by default to prevent log flooding, which as well as being annoying is a security hole as it can be used in malware attacks. syslog-ng apparently has a throttle option but I've no idea if it's enabled by default, not in this case by the sound of it.
Incidentally, I get the same sort of errors on my laptop which has an nvme drive, but looking at the time stamps you can see rsyslog stops the log growing too much:
Sep 1 20:27:02 xyz kernel: [ 2427.941856] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:27:02 xyz kernel: [ 2427.941874] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:27:02 xyz kernel: [ 2427.941881] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:27:02 xyz kernel: [ 2427.941889] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:27:11 xyz kernel: [ 2437.156292] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:27:11 xyz kernel: [ 2437.156303] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:27:11 xyz kernel: [ 2437.156307] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:27:11 xyz kernel: [ 2437.156311] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:27:52 xyz kernel: [ 2478.116243] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:27:52 xyz kernel: [ 2478.116264] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:27:52 xyz kernel: [ 2478.116271] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:27:52 xyz kernel: [ 2478.116280] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:28:19 xyz kernel: [ 2504.745594] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:28:19 xyz kernel: [ 2504.745615] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:28:19 xyz kernel: [ 2504.745623] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:28:19 xyz kernel: [ 2504.745631] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:28:59 xyz kernel: [ 2545.191077] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:28:59 xyz kernel: [ 2545.191100] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:28:59 xyz kernel: [ 2545.191108] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:28:59 xyz kernel: [ 2545.191116] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:29:29 xyz kernel: [ 2575.276836] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:29:29 xyz kernel: [ 2575.276864] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:29:29 xyz kernel: [ 2575.276875] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:29:29 xyz kernel: [ 2575.276889] nvme 0000:02:00.0: [ 0] RxErr (First)
Sep 1 20:29:40 xyz kernel: [ 2585.635256] pcieport 0000:00:1d.0: AER: Corrected error received: 0000:02:00.0
Sep 1 20:29:40 xyz kernel: [ 2585.635283] nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Sep 1 20:29:40 xyz kernel: [ 2585.635298] nvme 0000:02:00.0: device [15b7:5002] error status/mask=00000001/0000e000
Sep 1 20:29:40 xyz kernel: [ 2585.635310] nvme 0000:02:00.0: [ 0] RxErr (First)
I found some advice online to ignore them when I searched a while back, so I did.