As per the answers here and here, restarting rsyslog is the correct way to do a config reload. But logs which rsyslog may have been processing at the time may be lost.
Is there a way to avoid this by having rsyslog temporarily store the logs in a file before going down (since we expect a graceful restart) and then read those first as soon as it comes back up again ? When systemd is used, this will help because any new logs will be buffered in the activated socket and can be read after rsyslog finishes reading the temporary log file.