I'm a Mac OS X developer and I just finished adding Notification Center support to my app. For what it's worth, here's what I found out:
- By default, notifications (the alerts) are NOT shown if the application is already frontmost (this explains why alerts refuse to show up sometimes, and you only see the notification in Notification Center). This is up to given applications to overwrite and it is not very straightforward, so do expect most applications to not show notifications when they're active. In my opinion, this is very annoying.
- The application, after sending a notification still has a lot of control over that given notification. It can remove it from your screen at any time it wants, regardless of the settings you have. Basically, if Safari, for some reason was set to remove notifications after X seconds, it will do that, your settings do not matter.
I have no idea if this is a bug in Safari or Notification Center, or both. However, I am fairly confident that there is nothing you can do about the second issue (there might be a hidden defaults setting for the first one, but I haven't heard of it). I did check the WebKit API Specification, to make sure it's not something that the individual websites are doing, and you can rule out websites from your suspect's list, because they do not have any control over the notifications.
I guess we'll have to wait and see if Apple will address this in its next bug fix release (10.9). However, by the looks of it, not showing notifications when the app is frontmost is a "feature", so don't get your hopes up.
This is an old question, but just in case someone stumbles on it and is specifically worried about the privacy implications of Notification Center, the answer is YES, OS X does keep a log of notifications on disk.
The format is an sqlite database, and it can be found inside this folder:
~/Library/Application Support/NotificationCenter
Inside you'll find at least one .db file for your account, i've seen some that OS X apparently considered corrupt at one point, so they're called .db.corrupt.
Running the strings command on this file will show you a load of binary data, quite a few "NSSomething" class names, and yes, your iMessages, file paths, twitter and facebook notifications and anything else that was sent to Notification Center by an app or the system.
If you want to get rid of that file at a specific point in time, you can kill usernoted temporarily (it'll restart itself) and delete the file in one shot (run this as your user account, not with sudo):
killall usernoted && rm ~/Library/Application\ Support/NotificationCenter/*.db
This will, 99% of the time, catch usernoted while it's temporarily not running, successfully delete the old database, and usernoted will make a new empty one when it starts again.
This isn't a good solution if you're really worried about privacy, but aside from encrypting your system or using a ramdisk for that folder, there really isn't a solution.
Best Answer
The database has moved on Yosemite. The following command takes to you to its new location: