how to make logging.logger to behave like print
Question: Let's say I got this
[logging.logger](https://docs.python.org/2/library/logging.html) instance:

    
    
    import logging
    logger = logging.getLogger('root')
    FORMAT = "[%(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s"
    logging.basicConfig(format=FORMAT)
    logger.setLevel(logging.DEBUG)
    

Problem comes when I try to use it like the builtin print with a dynamic
number of arguments:

    
    
    >>> logger.__class__
    <class 'logging.Logger'>
    >>> logger.debug("hello")
    [<stdin>:1 -             <module>() ] hello
    >>> logger.debug("hello","world")
    Traceback (most recent call last):
      File "c:\Python2711\Lib\logging\__init__.py", line 853, in emit
        msg = self.format(record)
      File "c:\Python2711\Lib\logging\__init__.py", line 726, in format
        return fmt.format(record)
      File "c:\Python2711\Lib\logging\__init__.py", line 465, in format
        record.message = record.getMessage()
      File "c:\Python2711\Lib\logging\__init__.py", line 329, in getMessage
        msg = msg % self.args
    TypeError: not all arguments converted during string formatting
    Logged from file <stdin>, line 1
    

How could i emulate the print behaviour still using logging.Logger?


Answer: Alternatively, define a function that accepts `*args` and then `join` them in
your call to `logger`:

    
    
    def log(*args, logtype='debug', sep=' '):
        getattr(logger, logtype)(sep.join(str(a) for a in args))
    

I added a `logtype` for flexibility here but you could remove it if not
required.

