Копайте в сторону индексирования. Разделяйте на несколько файлов по времени записи, например.
Или храните "время записи -> оффсет внутри файла" где-нибудь отдельно.
Да даже можно использовать пайпы какие-нибудь - пусть данные записываются одновременно(или по очереди) в файл и в ваше приложение.
Ну и ничего страшного в большом размере файла нет. В вашем случае необходимо же считывать только последние записи - т.е. не весь файл, а только его конец.