It should be mentioned that by default the log amount for destination memory is quite small - as there are more important things you could do with RAM.
That said, you can increase the memory log to a max. of 2 MB, which holds a couple of hundred log entries.
config log memory
set max 2000000
It might reboot after that, warning you beforehand.
I agree that logging to memory is of limited use as the time span monitored is quite short (often too short). OTOH, if you increase the logging level above 'information', no traffic logs are recorded, just events. Those can be more important and even if logging to memory you might cover a decent time span.
Logging to flash (if that is possible at all) is not a good idea because the frequent writes will wear out the flash and cause hardware failure over time.
Logging to syslog might work for you, with the disadvantage that with a pile of log entries it may be cumbersome to find something. The FortiAnalyzer addresses this nicely as it compiles and displays the data for you. IMHO no decent network with more than 2 Fortigates should be run without it.