# File lib/swiftcore/LoggerInterface.rb, line 140
        def self.extend_object(log_client)

          class <<log_client
            include ::Swiftcore::Analogger::Client::LoggerInterface
            alias analog log
            
            # The interface supports string names, symbol names and levels as the first
            # argument. It therefrore covers both the standard analogger api, and the 
            # logger api, and some other string based log level api.
            # N.B. This adds one main limitation - all levels are commonly downcased
            # by this interface.
            def add(severity, message = nil, progname = nil, &block)
              level = severity
                            
              case severity
              when Numeric
                severity = LevelToSeverity[level]
              when Symbol
                severity = severity.to_s.downcase
                level = SeverityToLevel[severity]
              when String
                severity = severity.to_s.downcase
                level = SeverityToLevel[severity]
              else
                raise ArgumentError.new('#add accepts either Numeric, Symbol or String')
              end
              return true unless @level <= level
              
              # We map severity unknown to info by default. MapUnknownTo.replace('mylevel')
              # to change that.
              severity = MapUnknownTo if severity == 'unknown'

              progname ||= @service
              if message.nil?
                if block_given?
                  message = yield
                else
                  message = progname
                  progname = @service
                end
              end

              analog( severity, message )
              true
            end
            alias log add
            
          end
          
          # Default log level for logger is 0, maybe a good idea to fetch from logger itself.
          log_client.level ||= 0
          log_client
        end