syslog-ng has a much larger scope than merely transporting syslog messages and storing them to plain text log files:
* the ability to format log messages using UNIX shell-like variable expansion;
* the use of this shell-like variable expansion when naming files, thus covering thousands of destination files with a single statement;
* the ability to send log messages to local applications;
* logging directly into a database (since syslog-ng OSE 2.1);
* rewrite portions of the syslog message with set and substitute primitives (since syslog-ng OSE 3.0);
* classify incoming log messages and at the same time extract structured information from the unstructured syslog message (since syslog-ng OSE 3.0);
* generic name-value support: each message is just a set of name-value pairs, which can be used to store extra information (since syslog-ng OSE 3.0);
* the ability to process structured message formats transmitted over syslog, like extract columns from CSV formatted lines (since syslog-ng OSE 3.0);

