@@ -41,23 +41,26 @@ type StructLog =
41
41
[<ImportAll( " structlog" ) >]
42
42
let structLog : StructLog = nativeOnly
43
43
44
- type ConsoleLogger ( ) =
44
+ type Logger ( processors : Processor list ) =
45
45
46
46
let wrappedLogger = structLog.getLogger ()
47
47
48
+ // processor that combines args with the placeholders in the format
49
+ // string to generate parameters to be used with structlog
48
50
let processor ( logger : WrappedLogger ) ( logMethod : string ) ( eventDict : EventDict ) : EventDict =
49
51
let event = eventDict[ " event" ] :?> string
50
52
let args = eventDict[ " args" ] :?> obj[]
51
53
52
54
let format , parameters = Common.translateFormat event args
53
55
54
- // printfn "string.format %A" (format, args)
55
56
let event = String.Format( format, args = args)
56
57
parameters[ " event" ] <- event
57
58
parameters
58
59
59
60
let logger =
60
- structLog.wrapLogger ( wrappedLogger, [ Processor( processor) ] |> ResizeArray)
61
+ structLog.wrapLogger ( wrappedLogger, Processor( processor) :: processors |> ResizeArray)
62
+
63
+ new () = Logger([])
61
64
62
65
member val MinimumLevel = LogLevel.Trace with get, set
63
66
@@ -81,11 +84,26 @@ type ConsoleLogger() =
81
84
| LogLevel.Critical -> logger.Critical( message, dict [ " args" , args ])
82
85
| _ -> logger.Info( message, dict [ " args" , args ])
83
86
84
- member x.IsEnabled ( logLevel : LogLevel ) = true
87
+ member x.IsEnabled ( logLevel : LogLevel ) = logLevel >= x.MinimumLevel
85
88
member x.BeginScope ( var0 ) = failwith " Not implemented"
86
89
87
90
91
+ type ConsoleLogger () =
92
+ inherit Logger()
93
+
94
+ [<Import( " JsonRenderer" , " structlog.processors" ) >]
95
+ let JsonRenderer : unit -> Processor = nativeOnly
96
+
97
+ type JsonLogger () =
98
+ inherit Logger([ JsonRenderer() ])
99
+
100
+
88
101
type ConsoleLoggerProvider () =
89
102
interface ILoggerProvider with
90
103
member this.CreateLogger ( name ) = new ConsoleLogger()
91
104
member this.Dispose () = ()
105
+
106
+ type JsonLoggerProvider () =
107
+ interface ILoggerProvider with
108
+ member this.CreateLogger ( name ) = new JsonLogger()
109
+ member this.Dispose () = ()
0 commit comments