From what we tested, if fluentd is down, it will not lose logs... of course there should be some memory limit in the docker daemon to keep the log buffer, but in our tests is enough for allow us to do upgrades or for the docker orchestrator to detect the missing docker and restart it again
For json log, officially the json log file is not to be used by external tools: https://github.com/docker/docker/issues/29680
If you add that file anyway, you need to wildcard the docker container name and at very least, If you create a new container, you need to restart filebeat so it can detect the new container directory and start to read the logs... not very friendly, specially for automatic docker deployment
For syslog, again, if local syslog crash, you lose events while it is down
Maybe with the new plugin support in docker, we can finally add more log options, like proper json log files, logstash, kafka and beats.
I would say that json logs on disk/sock/pipe/whatever with proper (file/sock/pipe/whatever)beat auto-config/ would be perfect and would give everything we need