REBOL [] context [ lout: none log-level: 0 set 'init-logging func [ {Initializes the logging framework} dest [file! url! port! block!] {Where to log to} level [integer!] {The minimum level required for log messages to show up} ] [ lout: dest log-level: level ] set 'set-log-level func [ {Sets the log level} level [integer!] ] [ log-level: level ] set 'log func [ level [integer!] message [string!] value ] [ if level <= log-level [ print level if file? lout [ write/append lout rejoin [ mold level { } message { } mold :value { } newline ] ] if url? lout [ write lout rejoin [ mold level { } message { } mold :value { } newline ] ] if port? lout [ insert lout rejoin [ mold level { } message { } mold :value { } newline ] ] if block? lout [ append lout rejoin [ mold level { } message { } mold :value { } newline ] ] ] :value ] ]