Skip to content

Instantly share code, notes, and snippets.

@cboudereau
Created May 9, 2017 15:03
Show Gist options
  • Save cboudereau/467f0229e6765510e32b3dcdd8a88378 to your computer and use it in GitHub Desktop.
Save cboudereau/467f0229e6765510e32b3dcdd8a88378 to your computer and use it in GitHub Desktop.
let logger =
let convertLevel = function
| Logging.LogLevel.Debug -> LogLevel.Debug
| Logging.LogLevel.Verbose -> LogLevel.Trace
| Logging.LogLevel.Info -> LogLevel.Info
| Logging.LogLevel.Warn -> LogLevel.Warn
| Logging.LogLevel.Error -> LogLevel.Error
| Logging.LogLevel.Fatal -> LogLevel.Fatal
let name = "WebService"
let log = LogManager.GetLogger(name)
let culture = Globalization.CultureInfo.InvariantCulture
{ new Logging.Logger with
member __.name = [|name|]
member __.log(level: Logging.LogLevel) f =
async {
let lvl = convertLevel level
if log.IsEnabled lvl then
let m = f level
let message = sprintf "%A" m.value
let name = String.Join(".", m.name)
match m.fields |> Map.tryFind "errors" with
| None -> log.Log(LogEventInfo(lvl, name, culture, message, null))
| Some ex -> log.Log(LogEventInfo(lvl, name, culture, message, null, unbox ex)) }
member this.logWithAck level f = (this :> Logging.Logger).log level f }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment