root/lang/io/Log4Io/io/PatternLayout.io

Revision 16743, 1.8 kB (checked in by nowelium, 4 months ago)

lang/io/Log4Io: パッケージに分けてみた

Line 
1Log4Io PatternLayout := Log4Io Layout clone do(
2    pattern ::= nil
3    Formatter := Object clone do(
4        loggingEvent ::= nil
5        format := method(source,
6            buf := Sequence clone asBuffer
7            regex := Regex with("%(-?[0-9]+)?(\.?[0-9]+)?([cdmnpr%])(\{([^\}]+)\})?|([^%]+)")
8            regex matchesIn(source) map(match,
9                holder := match string
10                value := if(hasSlot(holder), perform(holder), holder)
11                buf appendSeq(value)
12            )
13            buf asString
14        )
15        setSlot("%c", method(
16            loggingEvent categoryName
17        ))
18        setSlot("%d", method(
19            format := Log4Io SimpleDateFormat with(Log4Io PatternLayout ISO8601_DATEFORMAT)
20            format format(loggingEvent startTime)
21        ))
22        setSlot("%m", method(
23            loggingEvent message
24        ))
25        setSlot("%n", method(
26            "\n"
27        ))
28        setSlot("%p", method(
29            loggingEvent level asString
30        ))
31        setSlot("%r", method(
32            loggingEvent startTime asString
33        ))
34        setSlot("%%", method(
35            "%"
36        ))
37    )
38    with := method(pattern,
39        c := self clone
40        if(pattern isNil not) then (
41            c pattern = pattern
42        ) else (
43            c pattern = Log4Io PatternLayout DEFAULT_CONVERSION_PATTERN
44        )
45        c
46    )
47    format := method(event,
48        formatter := Formatter clone
49        formatter setLoggingEvent(event)
50        formatter format(pattern)
51    )
52)
53
54Log4Io PatternLayout do (
55    TTCC_CONVERSION_PATTERN := "%r %p %c - %m%n"
56    DEFAULT_CONVERSION_PATTERN := "%m%n"
57
58    ISO8601_DATEFORMAT := "yyyy-MM-dd HH:mm:ss,SSS"
59    DATETIME_DATEFORMAT := "dd MMM YYY HH:mm:ss,SSS"
60    ABSOLUTETIME_DATEFORMAT := "HH:mm:ss,SSS"
61)
62
Note: See TracBrowser for help on using the browser.