Prepare Slack app, go through Sending messages using Incoming Webhooks and get webhook URL at step 4.
Create Dockerfile:
FROM fluent/fluentd:v1.9.1-debian-1.0
USER root
RUN fluent-gem install fluent-plugin-slack
USER fluent
Build docker:
docker build -t fluentd .
Add configuration, replace <path-to-log>, <app-name>, <tag> and
<slack-webhook-url> below by your values:
<source>
  @type tail
  path <path-to-log>/<app-name>.%Y-%m-%d.log
  pos_file /fluentd/etc/position/<app-name>.pos
  tag <tag>.error
  <parse>
    @type multiline
    format_firstline /\d{4}-\d{2}-\d{2}/
    format1 /(?<time>\S+ \S+) (?<thread>\[[^\]]+\]) (?<level>\S+) +(?<logger>\S+) - (?<message>.*)/
    time_key time
    time_format %Y-%m-%d %H:%M:%S,%L
    localtime false
  </parse>
</source>
<filter <tag>.error>
  @type grep
  <regexp>
    key level
    pattern ^ERROR$
  </regexp>
</filter>
<match <tag>.error>
  @type slack
  webhook_url <slack-webhook-url>
  channel <channel-name>
  message "<app-name> error at %s, message: %s"
  message_keys time,message
  flush_interval 0s
  <buffer>
    @type memory
    flush_mode immediate
  </buffer>
</match>
Create directory to keep position:
mkdir position
chown <user>:docker position
Start docker:
docker run --rm --name fluentd \
	-p 9880:9880 \
	-v <path-to-log>:<path-to-log> \
	-v `pwd`:/fluentd/etc \
	-e FLUENTD_CONF=fluentd.conf \
	fluentd 2>&1 >/dev/null &