: (start-server) ( threaded-server -- )
init-server
dup threaded-server [
- [ ] [ name>> ] [ log-level>> ] tri [
+ [ ] [ name>> ] bi [
[ listen-on [ start-accept-loop ] parallel-each ]
[ ready>> raise-flag ]
bi
PRIVATE>
: with-datagrams ( seq service quot -- )
- [ DEBUG ] dip
'[ [ [ _ ] dip spawn-datagrams ] parallel-each ] with-logging ; inline
\ (email-log-report) NOTICE add-error-logging\r
\r
: email-log-report ( service word-names -- )\r
- "logging.insomniac" DEBUG [ (email-log-report) ] with-logging ;\r
+ "logging.insomniac" [ (email-log-report) ] with-logging ;\r
\r
: schedule-insomniac ( service word-names -- )\r
[ [ email-log-report ] assoc-each rotate-logs ] 2curry\r
{ $description "Closes all open log streams. Subsequent logging will re-open the streams. This should be used before moving or deleting log files." } ;
HELP: with-logging
-{ $values { "service" "a log service name" } { "level" "a log level" } { "quot" quotation } }
+{ $values { "service" "a log service name" } { "quot" quotation } }
{ $description "Calls the quotation a new dynamic scope where all logging calls more urgent than " { $link log-level } " are sent to the log file for " { $snippet "service" } "." } ;
ARTICLE: "logging.rotation" "Log rotation"
\ error-logging-test ERROR add-error-logging
-"logging-test" DEBUG [
+"logging-test" [
[ 4 ] [ 1 3 input-logging-test ] unit-test
[ 4 ] [ 1 3 output-logging-test ] unit-test
: close-logs ( -- )\r
{ } "close-logs" send-to-log-server ;\r
\r
-: with-logging ( service level quot -- )\r
- '[\r
- _ log-service [ _ log-level _ with-variable ] with-variable\r
- ] call ; inline\r
+: with-logging ( service quot -- )\r
+ [ log-service ] dip with-variable ; inline\r
\r
! Aspect-oriented programming idioms\r
\r
PRIVATE>
: run-spider ( spider -- spider )
- "spider" DEBUG [
+ "spider" [
dup spider [
queue-initial-links
[ todo>> ] [ max-depth>> ] bi