The web server handles all logging in terms of access and error logging for most CGI scripts. The detail of what is actually logged often depends on the quality and existance of error capture code. My approach so as not to have to sift through the webserver error logs is to redirect Stderr to a different file for each script using CGI::Carp qw/set_message/
If your using DBI the database logs all data with greater efficiency than a hand rolled solution. Transactional logs can be created by choosing to turn on automatic binary or text format logging. If you don't want to use the automatic logs databases also often have bundled programs or commands like mysqlhotcopy or mysqldump for backup purposes.
Do you think in these instances logging is therefore unecessary?