# File lib/needle/log-factory.rb, line 184
    def get( name )
      name = name.fullname if name.respond_to?( :fullname )
      name = name.name if name.respond_to?( :name )
      name = name.to_s

      # the common case first, outside the synchronize, for speed
      return @loggers[ name ] if @loggers[ name ]

      @mutex.synchronize do
        # check again, inside the synchronize, to avoid race conditions
        return @loggers[ name ] if @loggers[ name ]

        definition = find_definition( name )

        level = definition[ :level ] || @default_level
        date_format = definition[ :date_format ] || @default_date_format
        message_format = definition[ :message_format ] ||
          @default_message_format

        level = LEVEL_TRANSLATOR[ level.to_s.upcase ] || level

        logger = Needle::Logger.new( @device )
        logger.level = level if level
        logger.progname = name
        logger.datetime_format = date_format if date_format
        logger.message_format = message_format if message_format

        @loggers[ name ] = logger
        return logger
      end
    end