Sua abordagem com portas diferentes para máquinas Linux e Windows não é ruim.
Alternativas:
- usando o programa como destino no syslog-ng (por exemplo, seu script personalizado que verifica o sistema operacional atual da máquina cliente e grava em linux.log ou windows.log) - lento e não confiável.
- usando match (...) no filtro syslog-ng para distinguir entre strings do syslog linux e windows (não tenho certeza se pode ser fácil e confiável a menos que você possa colocar alguma substring no syslog do cliente) e usar esse filtro para selecionar destino arquivo de log.
Ambos dificilmente podem ser recomendados.
No entanto, outro truque pode ser usar o transporte tcp para o syslog dos clientes linux e udp - das janelas. Do que você pode configurar destinos de arquivos com filtro no protocolo.