! See http://factorcode.org/license.txt for BSD license.\r
USING: kernel sequences namespaces words assocs logging sorting\r
prettyprint io io.styles io.files io.encodings.utf8\r
-strings combinators\r
+strings combinators accessors arrays\r
logging.server logging.parser calendar.format ;\r
IN: logging.analysis\r
\r
SYMBOL: message-histogram\r
\r
: analyze-entry ( entry -- )\r
- dup second ERROR eq? [ dup errors get push ] when\r
- dup second CRITICAL eq? [ dup errors get push ] when\r
- 1 over third word-histogram get at+\r
- dup third word-names get member? [\r
- 1 over rest message-histogram get at+\r
+ dup level>> { ERROR CRITICAL } memq? [ dup errors get push ] when\r
+ 1 over word-name>> word-histogram get at+\r
+ dup word-name>> word-names get member? [\r
+ 1 over [ level>> ] [ word-name>> ] [ message>> ] tri 3array\r
+ message-histogram get at+\r
] when\r
drop ;\r
\r
: log-entry. ( entry -- )\r
"====== " write\r
{\r
- [ first (timestamp>string) bl ]\r
- [ second pprint bl ]\r
- [ third write nl ]\r
- [ fourth "\n" join print ]\r
+ [ date>> (timestamp>string) bl ]\r
+ [ level>> pprint bl ]\r
+ [ word-name>> write nl ]\r
+ [ message>> "\n" join print ]\r
} cleave ;\r
\r
: errors. ( errors -- )\r
"==== INTERESTING MESSAGES:" print nl\r
"Total: " write dup values sum . nl\r
[\r
- dup second write ": " write third "\n" join write\r
+ dup level>> write ": " write message>> "\n" join write\r
] histogram.\r
nl\r
"==== WORDS:" print nl\r