This is an interesting question. The difference between alert and log comes down to how you write your rules. Rules can have actions associated with them when they trigger. The possible actions are, to quote the Snort manual:
- alert -- generate an alert using the selected alert method, and then log the packet
- log -- log the packet
- pass -- ignore the packet
- activate -- alert and then turn on another dynamic rule
- dynamic -- remain idle until activated by an activate rule, then act as a log rule
If a rule is configured to alert, then an alert will be generated and outputted to whatever alert method you have configured, like a file in /var/log/snort. The packet is then logged to your log output method; for example, the snort*.log files. So by processing the log files, you will get all of the entries. The best and clearest answer to this question, however, comes from Marty Roesch himself in this 2002 mailing list post.