Self-contained module for scripting or small console programs.
Log.info "Hello world!"
Log.fail "I'm meltinggggggg"
module Log = | |
open System | |
open System.IO | |
let private logDir = "logs" | |
let private log kind fmt = | |
Printf.kprintf (fun s -> | |
let now = DateTime.Now | |
let msg = sprintf "[%s] [%s] %s" (now.ToString("s")) kind s | |
let filename = | |
Path.Combine ( | |
__SOURCE_DIRECTORY__, | |
logDir, | |
sprintf "%s.log" (now.ToString("yyyy-MM-dd"))) | |
Directory.CreateDirectory (Path.GetDirectoryName(filename)) |> ignore | |
File.AppendAllLines (filename, [|msg|]) | |
printfn "%s" msg) fmt | |
let fail fmt = log "Fail" fmt | |
let info fmt = log "Info" fmt |