let file_logger conf shard_id fn =
let chn = open_out fn in
let line = ref 1 in
let fwrite ev =
List.iter
(fun l -> output_string chn l; output_char chn '\n'; incr line)
(format_log_event ev);
flush chn
in
let fpos () =
Some { filename = fn; line = !line }
in
let fclose () =
close_out chn
in
{
lshard = shard_id;
fwrite = fwrite;
fpos = fpos;
fclose = fclose;
}