Почему-то мне кажется что искать надо в строну rsyslog)
Не очень понял как наполняется исходный файл syslog-ng.
Но для разового парсинга можно сделать такую конструкцию
#!/bin/bash
while read domain; do echo "$domain" | mkdir ~/var/log/`grep -Po '(?<=nginx:\s).+(\.\D\S{1,3})'` 2>/dev/null; done < syslog
while read string; do echo "$string" | echo "$string" >> ~/var/log/`grep -Po '(?<=nginx:\s).+(\.\D\S{1,3})'`/nginx_ac.log ; done < syslog
Построчно читает файл syslog(заменить на нужный), выдирает регуляркой домен создает для него папку и кладет в него строчку соответствующую этому домену.
Для себя не решил как быть, с тем что исходный файл syslog видимо постоянно обновляется, как сделать так что читать с места новой записи, может удалять строчку после чтения...
Жду что меня закидают палками.