If you consider an IP address, a port number, a timestamp and an account number to be insanely detailed then I can't wait to see what you're going to say when you discover all the information Facebook, Google and others keep about you!
I should probably clarify this because it's not really that obvious.
The naive solution would be to assign a random public IP+port for each connection. That would require creating a new log entry for each connection a customer makes which would be a lot of volume indeed.
I think the solution is to instead give out leases to public IP+port combinations to the customer and associate those to his session. When establishing a new connection, check if there's an unused public IP+port in the session pool and if so extend and reuse it. If not, allocate a new IP address+port lease and add it to the session pool. With long enough leases and given that most users will only make a handful of concurrent connections (and it's a context where it's pretty ok to limit the number of concurrent connections anyway), that would limit the logging requirements to just a few entries per session per customer which is pretty tractable.
Note also that if I'm not mistaken a lot of mobile phone operators already use Carrier Grade NAT for 3G/4G and thus have already faced these issues. Yet they presumably found a solution otherwise everyone would know that the 'safe' place to pirate is from a smartphone.