The answer to your comparison depends on what you want to do, and what type of computer you are running, and what software you use.
The NI cards give errors back, but the errors are sometimes cryptic, you need to mask & compare the error code to determine what happened, many times the errors are non-specific. NI cards can have problems trying to continue when an error has occured. Many functions will not execute until you clear the error, and maybe re-initalize.
On the good side, you can write apps that sync CAN data with I/O easily using the CVI or Labview, and they leave plenty of time for other tasks to execute.
Vector cards on the other hand can be a difficult thing to interface to with Labview / CVI, you basically do many DLL calls, and with Windows
running in the backround, you can see problems. Errors from the Vector card are cryptic as well, but they seem to handle errors better, they don't need reinitalizing everything if an error happens. Many people like using the Vector card if you can write a quick low level API that stays out of the Windows arena.
The downside of a Vector card is that they can be a processor hog, leaving little time for other apps to run, especially complex ones like Labview or CVI.
As for file logging, both cards can do it, Vector would use CANalyzer or some similar program, and NI would use some custom application you write, or the NI bus monitor program. I like being able to write my own custom apps in Labview, it lets me setup file logging and displays in my own custom way much faster, as well as use custom displays that make sense for the project.