コンソールにログを記録する機能があります
Printf.kprintf
(printfn
"[%s][%A] %s"
<| level.ToString()
<| DateTime.Now)
format // fprint to System.Console.Out maybe
しかし、それは Printf.StringFormat をフォーマットとして使用しているため、同じロジックに従ってファイルに出力したいと考えています。
だから私は試します
Printf.kfprintf
(fun f ->
fprintfn file "[%s][%A] "
<| level.ToString()
<| DateTime.Now
) file (format)
そして、私が理解できないことが2つあります。なぜunit -> 'A代わりにあるのstring -> 'Aですか?どのように使用すればよいですか?そして、StringFormatここをとして使用できますTextWriterFormatか?
これに関するもう1つの問題は、最初のスニペットで継承formatすることですが、kfprintfでは、フォーマットメッセージがあり、ものの前に表示string -> 'Resultされるため、継承できません。何とか継承できると思いますが、良い例が見つかりません。見つかったのはF#コンパイラの一部だけです:unit -> 'Result[x][x]formatf
[<CompiledName("PrintFormatToTextWriter")>]
let fprintf (os: TextWriter) fmt = kfprintf (fun _ -> ()) os fmt
[<CompiledName("PrintFormatLineToTextWriter")>]
let fprintfn (os: TextWriter) fmt = kfprintf (fun _ -> os.WriteLine()) os fmt
しかし、どうすればこれを使用できますunitか? メッセージの後にメッセージを投稿するにはどうすればよいですか?