397: def Log.newdestination(dest)
398:
399: if @destinations.find { |name, obj| obj.name == dest }
400: return
401: end
402:
403: name, type = @desttypes.find do |name, klass|
404: klass.match?(dest)
405: end
406:
407: unless type
408: raise Puppet::DevError, "Unknown destination type %s" % dest
409: end
410:
411: begin
412: if type.instance_method(:initialize).arity == 1
413: @destinations[dest] = type.new(dest)
414: else
415: @destinations[dest] = type.new()
416: end
417: rescue => detail
418: if Puppet[:debug]
419: puts detail.backtrace
420: end
421:
422:
423: if @destinations.empty? and (dest != :console and dest != "console")
424: newdestination(:console)
425: end
426: end
427: end