I use an Excel spreadsheet. Raw data goes in one tab, with each row representing an individual item purchased. Fields (columns) are date, vendor, type (recurring vs. discretionary), category, subcategory, item, and amount. I use a pivot table on a separate tab to summarize amount spent by type, category, subcategory, and item. I can then calculate monthly expenditures and percent of total by category.
It's very easy as long as I keep up with data entry on a daily or near-daily basis, and I can get as much or as little detail as I want out of the summary. It's also easy to slice and dice however I need to based on information needs at any point in time. For example, for a while I was tracking a rolling 365-day total by category/subcategory as a way to smooth out lumpiness in the monthly totals. It's also easy to compartmentalize large one-time expenditures, such as when we spend a lot on travel early in the year, and then use the remaining daily "base" spend to project anticipated spend for the entire year. This is important because I am FIREd and need to make sure annual spending stays within an overall limit.