]> gitweb.factorcode.org Git - factor.git/blob - basis/logging/insomniac/insomniac.factor
7c1db5b7c0ca85cbddc3db4b7c830e47466e5c50
[factor.git] / basis / logging / insomniac / insomniac.factor
1 ! Copyright (C) 2008 Slava Pestov.\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 USING: logging.analysis logging.server logging smtp kernel\r
4 io.files io.streams.string namespaces make alarms assocs\r
5 io.encodings.utf8 accessors calendar sequences qualified ;\r
6 QUALIFIED: io.sockets\r
7 IN: logging.insomniac\r
8 \r
9 SYMBOL: insomniac-sender\r
10 SYMBOL: insomniac-recipients\r
11 \r
12 : ?analyze-log ( service word-names -- string/f )\r
13     [ analyze-log-file ] with-string-writer ;\r
14 \r
15 : email-subject ( service -- string )\r
16     [\r
17         "[INSOMNIAC] " % % " on " % io.sockets:host-name %\r
18     ] "" make ;\r
19 \r
20 : (email-log-report) ( service word-names -- )\r
21     dupd ?analyze-log [ drop ] [\r
22         <email>\r
23             swap >>body\r
24             insomniac-recipients get >>to\r
25             insomniac-sender get >>from\r
26             swap email-subject >>subject\r
27         send-email\r
28     ] if-empty ;\r
29 \r
30 \ (email-log-report) NOTICE add-error-logging\r
31 \r
32 : email-log-report ( service word-names -- )\r
33     "logging.insomniac" [ (email-log-report) ] with-logging ;\r
34 \r
35 : schedule-insomniac ( service word-names -- )\r
36     [ [ email-log-report ] assoc-each rotate-logs ] 2curry\r
37     1 days every drop ;\r