syslog-ng is a nice, flexible logging system that I use on most of my boxes. There's a good admin guide, but here are some short notes so I don't forget what I've done locally.

I wanted to store my verbose git-daemon logs in their own file, so I added the following to /etc/syslog-ng/conf.d/git-daemon.conf:

destination git_daemon_file {
  file("/var/log/git-daemon");
  };

filter git_daemon_filter {
  program("git-daemon");
  };

filter git_daemon_drop_filter {
  #level(notice, debug);
  level(debug);
  };

log {
  source(src);
  filter(git_daemon_filter);
  filter(git_daemon_drop_filter);
  flags(final);
  };

log {
  source(src);
  filter(git_daemon_filter);
  destination(git_daemon_file);
  flags(final);
  };

In /etc/syslog-ng/syslog-ng.conf, you'll want to add something like:

include "conf.d";

to source the config files from /etc/syslog-ng/conf.d in alphabetical order. You should add the include line before any log definitions so you can use final to in your auxiliary rules.

Check that you didn't mess anything up with:

$ syslog-ng --syntax-only

Restart syslog-ng with:

# /etc/init.d/syslog-ng reload