code: func LogStreamer() http.Handler {
  	logs := mux.NewRouter()
  	logsHandler := func(w http.ResponseWriter, req *http.Request) {
  		params := mux.Vars(req)
  		route := new(router.Route)
  
  		if params["value"] != "" {
  			switch params["predicate"] {
  			case "id":
  				route.FilterID = params["value"]
  				if len(route.ID) > 12 {
  					route.FilterID = route.FilterID[:12]
  				}
  			case "name":
  				route.FilterName = params["value"]
  			}
  		}
  
  		if route.FilterID != "" && !router.Routes.RoutingFrom(route.FilterID) {
  			http.NotFound(w, req)
  			return
  		}
  
  		defer debug("http: logs streamer disconnected")
  		logstream := make(chan *router.Message)
  		defer close(logstream)
  
  		var closer <-chan bool
  		if req.Header.Get("Upgrade") == "websocket" {
  			debug("http: logs streamer connected [websocket]")
  			closerBi := make(chan bool)
  			defer websocketStreamer(w, req, logstream, closerBi)
  			closer = closerBi
  		} else {
  			debug("http: logs streamer connected [http]")
  			defer httpStreamer(w, req, logstream, route.MultiContainer())
  			closer = w.(http.CloseNotifier).CloseNotify()
  		}
  		route.OverrideCloser(closer)
  
  		router.Routes.Route(route, logstream)
  	}
  	logs.HandleFunc("/logs/{predicate:[a-zA-Z]+}:{value}", logsHandler).Methods("GET")
  	logs.HandleFunc("/logs", logsHandler).Methods("GET")
  	return logs
  }
docs: // LogStreamer returns a http.Handler that can stream logs