I want to have a rsyslog log its data to a fifo that a daemon creates. However, if the daemon isn't running and the fifo isn't there then rsyslog will just start writing to a file in its place.
Is there any way I can prevent this from happening?
If you have any control over the way the daemon is started, tell rsyslog to log to a UDP port and pipe the data into the daemon with netcat:
That way, if the daemon isn't available, entries will be discarded.
If you supervise the daemon, it'll be available almost all the time anyway.