I think apaillard wants more than squid access.log. He wants go get a log file with Login name of the captive portal, hour of connexion, mac adress + Ip and all visited URLS… right now, this is not possible easily from Pfsense.
You have to enable a classic syslog to log all systems events (DHCP, Captive portal, MACs etc...) to a remote system AND you have to store & rotate the Access.log from squid. The best way to rotate it is by using the GUI in pfsense, there is a checkbox to rotate, and a value to enter (365 for a year). Then, Pfsense will rotate your logs in the Pfsense's filesystem. What you have to do next, is transfering this file, access.log (in fact access.0.log, because access.log is always in use) to your remote server, either by using FTP or SCP ; script this in a file, then use CRON (it's available in Pfsense's package, as well as a GUI for CRON) to run your FTP/SCP script every day or every week, depending on how you rotate.
By the way, you have to enable a special command in squid to get proper timestamp in your access.log, but by doing this, lightsquid wont work anymore.
Then, on one serveur you have system logs on syslog + squid logs on a ftp folder ; you now just have to look for a match between your 2 files, for a precise day ; then you will see what IP has been given at what time, and by looking in the access.log file, you will see what sites this ip has visited....
I don't see how you can do better than that! (but if someone do, let's explain dude!)