root/lang/io/Log4Io/io/Appender.io

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

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

Line 
1Log4Io Appender := Object clone do(
2    logger ::= nil
3    layout ::= nil
4
5    with := method()
6
7    doAppend := block(event, nil)
8    doClear := block()
9
10    setLogger := method(logger,
11        logger onlog addListener(self doAppend bind(self))
12        logger onclear addListener(self doClear bind(self))
13
14        self logger = logger
15    )
16)
17
18Log4Io ConsoleAppender := Log4Io Appender clone do(
19    with = method(
20        c := self clone
21        c layout = Log4Io PatternLayout with(Log4Io PatternLayout TTCC_CONVERSION_PATTERN)
22        c
23    )
24
25    doAppend := block(event,
26        write(layout format(event))
27    )
28
29    asString := method(
30        "Log4Io ConsoleAppender"
31    )
32)
33
34Log4Io FileAppender := Log4Io Appender clone do(
35    file ::= nil
36    with = method(path,
37        filePath = if(path isNil, "log4io.log", path)
38        c := self clone
39        c file := File with(filePath)
40        c layout = Log4Io SimpleLayout with
41        c
42    )
43
44    doAppend := block(event,
45        e := try(
46            if(file isOpen not) then (
47                file openForAppending
48            )
49            file write(layout format(event))
50            file close
51        )
52        e catch(Exception,
53            log4ioLogger error(e)
54        )
55    )
56
57    doClear := block(
58        e := try(
59            if(file isOpen not) then(
60                file open
61            )
62            file setContents("")
63            file close
64        )
65        e catch(Exception,
66            log4ioLogger error(e)
67        )
68    )
69
70    asString := method(
71        "Log4Io FileAppender[" .. file contents .. "]"
72    )
73)
74
Note: See TracBrowser for help on using the browser.