112: def Log.newdestination(dest)
113:
114: if @destinations.find { |name, obj| obj.name == dest }
115: return
116: end
117:
118: name, type = @desttypes.find do |name, klass|
119: klass.match?(dest)
120: end
121:
122: raise Puppet::DevError, "Unknown destination type #{dest}" unless type
123:
124: begin
125: if type.instance_method(:initialize).arity == 1
126: @destinations[dest] = type.new(dest)
127: else
128: @destinations[dest] = type.new
129: end
130: flushqueue
131: @destinations[dest]
132: rescue => detail
133: puts detail.backtrace if Puppet[:debug]
134:
135:
136: newdestination(:console) if @destinations.empty? and (dest != :console and dest != "console")
137: end
138: end