You have a normal org file with your tasks, I use one per client with 1st level headings usually being projects (you might find that one per project suites you better though).
So something like this:
* Project 1
** TODO Some task
** TODO Another task
* Project 2
** TODO yet another task
(the "TODO" keywords aren't needed for the time tracking, but I use them to
track what needs doing)When I want to start work on a task I clock in by moving the point to one of the task headings and hitting C-cC-xC-i. It adds a clock thingy under the heading and the task shows up in my mode-line (along with how long I've worked on it for). When I'm done with that task I do one of three things, either clock into another task, clock out manually with C-xC-xC-o, or mark the task as done (for TODO style headings).
So doing this means that all my task headings accrue clock annotations (which org-mode collapses by default so I don't have to see them). I can then use various functions to generate reports. My favourite way is using a dynamic block:
#+BEGIN: clocktable :maxlevel 2 :scope file
Clock summary at [2009-02-11 Wed 15:08]
| L | Headline | Time | |
|---+-----------------------+--------+------|
| | *Total time* | *9:02* | |
|---+-----------------------+--------+------|
| 1 | Project 1 | 7:36 | |
| 2 | TODO Some task | | 5:32 |
| 2 | TODO Another task | | 2:04 |
|---+-----------------------+--------+------|
| 1 | Project 2 | 1:26 | |
| 2 | TODO yet another task | | 1:26 |
#+END:
You can hit C-cC-c at the beginning of the block and it will update. I
usually have several blocks under a heading at the top, one that shows
my hours for today, one that shows my hours since I last invoiced and
one that shows total hours ever.I also org-mode for tracking my schedule, taking notes, writing documents (LaTeX output is great) and tracking all my tasks.
Planner-mode also has timelogging capabilities (using timelog.el) but I prefer org-mode.