pppd-logger project is a simple C program that is run at every connection up and every connection down.
Note: if keep-alive is setted and connection goes down (pppd still live) scripts in ip-up.d and ip-down.d are called at any connection up and down, even if the deamon is the same.
Working schema is simple, the code is short. It is needed a GUI for making and looking at report.
Not Invasive Solution
If coming from MS Windows you could think to code a dialer that record everything and manage update in a db (or file). But on Linux such a kind of solution is too much invasive: the problem is that the process that create a new network interface should be run as super user or with suid, and more than that it have to setup all other thing, such as firewall and other.
Fortunately in Linux (or BSD, or any *NIX) there is pppd, that is a deamon which install network interface, run a chatscript for AT commands, a does all that is needed for estabilish a connection, but give you opportunity to do other task at start and end time.
Typically you can insert a script in /etc/ppp/ip-up.d/ directory and pppd call it everytime a network interface is up. (analogous for /etc/ppp/ip-down.d/ on net down).