This is a project I've been wanting to do for a while. A lot of my projects write debug and other status information to the serial port. Fairly often it seems that I have to let them run for hours or even days to catch an elusive intermittent bug. Until now, this has meant keeping a PC running with a terminal program connected to the microcontroller to log the serial output, which seems pretty inefficient. My primary goal with this logger was to improve that situation.
Hardware consists of an Arduino Uno or compatible, Adafruit's Micro SD breakout board, a button switch and three LEDs. It should be easily adaptable to work with the Micro SD on an Ethernet shield or other hardware. (I use the card detect contact on AFI's board; I don't think the shield has that feature, but it would be minor to remove it from the code.)
The serial input is double-buffered and interrupt driven to maximize throughput. Details, code and schematic are on GitHub.