Yes. The Suricata package will decode and log all HTTP traffic. You can see the source/destination address and the exact URL that is being requested. Everything is timestamped. However, it is a 'raw' log and will require some manipulating to pull it into a more readable format.
Another alternative is Netflow. Export the data to a Netflow collector and you can see the conversations, but not the actual URL's being requested.
Another less informative alternative is to use OpenDNS. You can generate reports on what domains are being requested, but not from which machine and the report is only on a full-day basis.
EDIT: The squid solution posted above would be a very good way to accomplish what you want.