Src/ILogger.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using namespace System.Collections.Generic

enum LoggingEventType
{
    Debug
    Information
    Warning
    Error
    Fatal
}

class ILogger
{
    [List[ILoggerAppender]]$appenders
    [Type]$logEntryType

    [void]debug([String]$message) { }
    [void]information([String]$message) { }
    [void]warning([String]$message) { }
    [void]error([String]$message) { }
    [void]fatal([String]$message) { }
}

class ILoggerEntry
{
    [ValidatePattern('\w')]
    [LoggingEventType]$severity

    [ValidateNotNullOrEmpty()]
    [String]$message
    [Exception]$exception = $null

    static [ILoggerEntry]yield([String]$text) { throw }
}

class ILoggerAppender
{
    [void]log([ILoggerEntry]$entry) { }
}