Skip to content

Commit 2fa4902

Browse files
committed
fantomas the world
1 parent 39f56ef commit 2fa4902

File tree

12 files changed

+8608
-8197
lines changed

12 files changed

+8608
-8197
lines changed

src/ClientServer.cg.fs

Lines changed: 563 additions & 523 deletions
Large diffs are not rendered by default.

src/FsLibLog.fs

Lines changed: 139 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,21 @@ module Types =
2626
type MappedContext = string -> obj -> bool -> IDisposable
2727

2828
/// Type representing a Log
29-
type Log =
30-
{ LogLevel: LogLevel
31-
Message: MessageThunk
32-
Exception: exn option
33-
Parameters: obj list
34-
AdditionalNamedParameters: ((string * obj * bool) list) }
35-
36-
static member StartLogLevel(logLevel: LogLevel) =
37-
{ LogLevel = logLevel
38-
Message = None
39-
Exception = None
40-
Parameters = List.empty
41-
AdditionalNamedParameters = List.empty }
29+
type Log = {
30+
LogLevel: LogLevel
31+
Message: MessageThunk
32+
Exception: exn option
33+
Parameters: obj list
34+
AdditionalNamedParameters: ((string * obj * bool) list)
35+
} with
36+
37+
static member StartLogLevel(logLevel: LogLevel) = {
38+
LogLevel = logLevel
39+
Message = None
40+
Exception = None
41+
Parameters = List.empty
42+
AdditionalNamedParameters = List.empty
43+
}
4244

4345
/// An interface wrapper for `Logger`. Useful when using depedency injection frameworks.
4446
type ILog =
@@ -58,7 +60,10 @@ module Types =
5860
stack.Pop().Dispose()
5961

6062
member __.Push(item: IDisposable) = stack.Push item
61-
member __.Push(items: IDisposable list) = items |> List.iter stack.Push
63+
64+
member __.Push(items: IDisposable list) =
65+
items
66+
|> List.iter stack.Push
6267

6368
static member Create(items: IDisposable list) =
6469
let ds = new DisposableStack()
@@ -110,7 +115,9 @@ module Types =
110115
///
111116
/// **Output Type**
112117
/// * `unit`
113-
member logger.fatal(logConfig: Log -> Log) = logger.fatal' logConfig |> ignore
118+
member logger.fatal(logConfig: Log -> Log) =
119+
logger.fatal' logConfig
120+
|> ignore
114121

115122
/// **Description**
116123
///
@@ -135,7 +142,9 @@ module Types =
135142
///
136143
/// **Output Type**
137144
/// * `unit`
138-
member logger.error(logConfig: Log -> Log) = logger.error' logConfig |> ignore
145+
member logger.error(logConfig: Log -> Log) =
146+
logger.error' logConfig
147+
|> ignore
139148

140149
/// **Description**
141150
///
@@ -160,7 +169,9 @@ module Types =
160169
///
161170
/// **Output Type**
162171
/// * `unit`
163-
member logger.warn(logConfig: Log -> Log) = logger.warn' logConfig |> ignore
172+
member logger.warn(logConfig: Log -> Log) =
173+
logger.warn' logConfig
174+
|> ignore
164175

165176
/// **Description**
166177
///
@@ -185,7 +196,9 @@ module Types =
185196
///
186197
/// **Output Type**
187198
/// * `unit`
188-
member logger.info(logConfig: Log -> Log) = logger.info' logConfig |> ignore
199+
member logger.info(logConfig: Log -> Log) =
200+
logger.info' logConfig
201+
|> ignore
189202

190203
/// **Description**
191204
///
@@ -210,7 +223,9 @@ module Types =
210223
///
211224
/// **Output Type**
212225
/// * `unit`
213-
member logger.debug(logConfig: Log -> Log) = logger.debug' logConfig |> ignore
226+
member logger.debug(logConfig: Log -> Log) =
227+
logger.debug' logConfig
228+
|> ignore
214229

215230
/// **Description**
216231
///
@@ -235,7 +250,9 @@ module Types =
235250
///
236251
/// **Output Type**
237252
/// * `unit`
238-
member logger.trace(logConfig: Log -> Log) = logger.trace' logConfig |> ignore
253+
member logger.trace(logConfig: Log -> Log) =
254+
logger.trace' logConfig
255+
|> ignore
239256

240257

241258
/// An interface for retrieving a concrete logger such as Serilog, Nlog, etc.
@@ -302,9 +319,16 @@ module Types =
302319
/// **Exceptions**
303320
///
304321
let addParameters (``params``: obj list) (log: Log) =
305-
let ``params`` = ``params`` |> List.map box
306-
{ log with Parameters = log.Parameters @ ``params`` }
322+
let ``params`` =
323+
``params``
324+
|> List.map box
307325

326+
{
327+
log with
328+
Parameters =
329+
log.Parameters
330+
@ ``params``
331+
}
308332

309333

310334
/// **Description**
@@ -323,9 +347,10 @@ module Types =
323347
///
324348
/// **Exceptions**
325349
///
326-
let addContext (key: string) (value: obj) (log: Log) =
327-
{ log with
328-
AdditionalNamedParameters = List.append log.AdditionalNamedParameters [ key, (box value), false ] }
350+
let addContext (key: string) (value: obj) (log: Log) = {
351+
log with
352+
AdditionalNamedParameters = List.append log.AdditionalNamedParameters [ key, (box value), false ]
353+
}
329354

330355

331356
/// **Description**
@@ -346,9 +371,10 @@ module Types =
346371
///
347372
/// **Exceptions**
348373
///
349-
let addContextDestructured (key: string) (value: obj) (log: Log) =
350-
{ log with
351-
AdditionalNamedParameters = List.append log.AdditionalNamedParameters [ key, (box value), true ] }
374+
let addContextDestructured (key: string) (value: obj) (log: Log) = {
375+
log with
376+
AdditionalNamedParameters = List.append log.AdditionalNamedParameters [ key, (box value), true ]
377+
}
352378

353379

354380
/// **Description**
@@ -402,7 +428,11 @@ module Providers =
402428
open System.Linq.Expressions
403429

404430
let getLogManagerType () = Type.GetType("Serilog.Log, Serilog")
405-
let isAvailable () = getLogManagerType () |> isNull |> not
431+
432+
let isAvailable () =
433+
getLogManagerType ()
434+
|> isNull
435+
|> not
406436

407437
let getPushProperty () =
408438

@@ -414,7 +444,14 @@ module Providers =
414444
()
415445

416446
let pushPropertyMethod =
417-
ndcContextType.GetMethod("PushProperty", [| typedefof<string>; typedefof<obj>; typedefof<bool> |])
447+
ndcContextType.GetMethod(
448+
"PushProperty",
449+
[|
450+
typedefof<string>
451+
typedefof<obj>
452+
typedefof<bool>
453+
|]
454+
)
418455

419456
let nameParam = Expression.Parameter(typedefof<string>, "name")
420457
let valueParam = Expression.Parameter(typedefof<obj>, "value")
@@ -438,11 +475,27 @@ module Providers =
438475

439476
let getForContextMethodCall () =
440477
let logManagerType = getLogManagerType ()
441-
let method = logManagerType.GetMethod("ForContext", [| typedefof<string>; typedefof<obj>; typedefof<bool> |])
478+
479+
let method =
480+
logManagerType.GetMethod(
481+
"ForContext",
482+
[|
483+
typedefof<string>
484+
typedefof<obj>
485+
typedefof<bool>
486+
|]
487+
)
488+
442489
let propertyNameParam = Expression.Parameter(typedefof<string>, "propertyName")
443490
let valueParam = Expression.Parameter(typedefof<obj>, "value")
444491
let destructureObjectsParam = Expression.Parameter(typedefof<bool>, "destructureObjects")
445-
let exrs: Expression[] = [| propertyNameParam; valueParam; destructureObjectsParam |]
492+
493+
let exrs: Expression[] = [|
494+
propertyNameParam
495+
valueParam
496+
destructureObjectsParam
497+
|]
498+
446499
let methodCall = Expression.Call(null, method, exrs)
447500

448501
let func =
@@ -452,16 +505,20 @@ module Providers =
452505

453506
fun name -> func.Invoke("SourceContext", name, false)
454507

455-
type SerilogGateway =
456-
{ Write: obj -> obj -> string -> obj[] -> unit
457-
WriteException: obj -> obj -> exn -> string -> obj[] -> unit
458-
IsEnabled: obj -> obj -> bool
459-
TranslateLevel: LogLevel -> obj }
508+
type SerilogGateway = {
509+
Write: obj -> obj -> string -> obj[] -> unit
510+
WriteException: obj -> obj -> exn -> string -> obj[] -> unit
511+
IsEnabled: obj -> obj -> bool
512+
TranslateLevel: LogLevel -> obj
513+
} with
460514

461515
static member Create() =
462516
let logEventLevelType = Type.GetType("Serilog.Events.LogEventLevel, Serilog")
463517

464-
if (logEventLevelType |> isNull) then
518+
if
519+
(logEventLevelType
520+
|> isNull)
521+
then
465522
failwith ("Type Serilog.Events.LogEventLevel was not found.")
466523

467524
let debugLevel = Enum.Parse(logEventLevelType, "Debug", false)
@@ -483,7 +540,10 @@ module Providers =
483540

484541
let loggerType = Type.GetType("Serilog.ILogger, Serilog")
485542

486-
if (loggerType |> isNull) then
543+
if
544+
(loggerType
545+
|> isNull)
546+
then
487547
failwith ("Type Serilog.ILogger was not found.")
488548

489549
let isEnabledMethodInfo = loggerType.GetMethod("IsEnabled", [| logEventLevelType |])
@@ -497,7 +557,14 @@ module Providers =
497557
Expression.Lambda<Func<obj, obj, bool>>(isEnabledMethodCall, instanceParam, levelParam).Compile()
498558

499559
let writeMethodInfo =
500-
loggerType.GetMethod("Write", [| logEventLevelType; typedefof<string>; typedefof<obj[]> |])
560+
loggerType.GetMethod(
561+
"Write",
562+
[|
563+
logEventLevelType
564+
typedefof<string>
565+
typedefof<obj[]>
566+
|]
567+
)
501568

502569
let messageParam = Expression.Parameter(typedefof<string>)
503570
let propertyValuesParam = Expression.Parameter(typedefof<obj[]>)
@@ -517,7 +584,15 @@ module Providers =
517584
let write = expression.Compile()
518585

519586
let writeExceptionMethodInfo =
520-
loggerType.GetMethod("Write", [| logEventLevelType; typedefof<exn>; typedefof<string>; typedefof<obj[]> |])
587+
loggerType.GetMethod(
588+
"Write",
589+
[|
590+
logEventLevelType
591+
typedefof<exn>
592+
typedefof<string>
593+
typedefof<obj[]>
594+
|]
595+
)
521596

522597
let exceptionParam = Expression.Parameter(typedefof<exn>)
523598

@@ -543,13 +618,15 @@ module Providers =
543618
)
544619
.Compile()
545620

546-
{ Write =
621+
{
622+
Write =
547623
(fun logger level message formattedParmeters -> write.Invoke(logger, level, message, formattedParmeters))
548624
WriteException =
549625
fun logger level ex message formattedParmeters ->
550626
writeException.Invoke(logger, level, ex, message, formattedParmeters)
551627
IsEnabled = fun logger level -> isEnabled.Invoke(logger, level)
552-
TranslateLevel = translateLevel }
628+
TranslateLevel = translateLevel
629+
}
553630

554631
type private SerigLogProvider() =
555632
let getLoggerByName = getForContextMethodCall ()
@@ -562,7 +639,11 @@ module Providers =
562639

563640
match messageFunc with
564641
| None -> serilogGateway.IsEnabled logger translatedValue
565-
| Some _ when serilogGateway.IsEnabled logger translatedValue |> not -> false
642+
| Some _ when
643+
serilogGateway.IsEnabled logger translatedValue
644+
|> not
645+
->
646+
false
566647
| Some m ->
567648
match ``exception`` with
568649
| Some ex -> serilogGateway.WriteException logger translatedValue ex (m ()) formatParams
@@ -571,7 +652,9 @@ module Providers =
571652
true
572653

573654
interface ILogProvider with
574-
member this.GetLogger(name: string) : Logger = getLoggerByName name |> writeMessage
655+
member this.GetLogger(name: string) : Logger =
656+
getLoggerByName name
657+
|> writeMessage
575658

576659
member this.OpenMappedContext (key: string) (value: obj) (destructure: bool) : IDisposable =
577660
pushProperty key value destructure
@@ -602,7 +685,8 @@ module LogProvider =
602685

603686
let private noopDisposable =
604687
{ new IDisposable with
605-
member __.Dispose() = () }
688+
member __.Dispose() = ()
689+
}
606690

607691
/// **Description**
608692
///
@@ -687,7 +771,8 @@ module LogProvider =
687771

688772
{ new ILog with
689773
member x.Log = logFunc
690-
member x.MappedContext = openMappedContextDestucturable }
774+
member x.MappedContext = openMappedContextDestucturable
775+
}
691776

692777
/// **Description**
693778
///
@@ -698,7 +783,10 @@ module LogProvider =
698783
///
699784
/// **Output Type**
700785
/// * `ILog`
701-
let getLoggerByType (``type``: Type) = ``type`` |> string |> getLoggerByName
786+
let getLoggerByType (``type``: Type) =
787+
``type``
788+
|> string
789+
|> getLoggerByName
702790

703791
/// **Description**
704792
///
@@ -735,8 +823,9 @@ module LogProvider =
735823
///
736824
/// **Exceptions**
737825
///
738-
let getLoggerByQuotation (quotation: Quotations.Expr) = getModuleType quotation |> getLoggerByType
739-
826+
let getLoggerByQuotation (quotation: Quotations.Expr) =
827+
getModuleType quotation
828+
|> getLoggerByType
740829

741830

742831
/// **Description**

0 commit comments

Comments
 (0)