You are using PUT_LINE, from what package ? UTL_FILE ?
If so, you could use the procedure FFLUSH.
FFLUSH physically writes pending data to the file when called.
Depending on how often you are writing to the file, you could also open and close the file each time you need to write to it. When the file is closed, all pending data is written to disk.