Re: Extra fields for logging

2009-12-26 Thread Joan Miller
On 26 dic, 04:34, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:
 On Fri, 25 Dec 2009 12:07:20 -0800, Joan Miller wrote:
  On 25 dic, 13:24, Steven D'Aprano st...@remove-this-
  cybersource.com.au wrote:
  On Thu, 24 Dec 2009 05:06:48 -0800, Joan Miller wrote:
   I'm trying to add some extra fields to logging, I'm following this
   information [1] but it faills in my case.
  [...]
   I get = KeyError: 'host'

  Please post the entire traceback you get.

  --
  Steven

  Traceback (most recent call last):
    File /usr/lib/python2.6/logging/__init__.py, line 768, in emit
      msg = self.format(record)
    File /usr/lib/python2.6/logging/__init__.py, line 648, in format
      return fmt.format(record)
    File /usr/lib/python2.6/logging/__init__.py, line 439, in format
      s = self._fmt % record.__dict__
  KeyError: 'host'

 Hmmm... that wasn't as helpful as I had hoped. Oh well.

 Going back to your earlier post, I can see a couple of problems.

 Firstly, your __getitem__ method always returns None. You need to return
 the result.

 Secondly, this works for me:

 import logging
 class ExtraInfo(object):
     def __getitem__(self, name):
         if name == 'host':
             result = 'foo'
         return result
     def __iter__(self):
         keys = ['host',]
         keys.extend(self.__dict__.keys())
         return iter(keys)  # better than keys.__iter__

 def setup(filename='/tmp/foo.log'):
     log = logging.LoggerAdapter(logging.getLogger('foo'), ExtraInfo())
     logging.basicConfig(
         level=logging.DEBUG,
         format=Date-Time: %(asctime)s
 Host: %(host)s
 %(levelname)s:
 %(message)s,
     datefmt=%Y-%m-%dT%H:%M:%S%z,
     filename=filename,
     filemode='w')
     return log

 log = setup()
 log.error('testing ...')
 log.debug('something happened')
 log.critical(it's the end of the world as we know it!)

 Hope this helps.

 --
 Steven

Thanks Steven! You give me the idea.

* In the setup(), is not necessary to use:

log = logging.LoggerAdapter(logging.getLogger('foo'), ExtraInfo()

neither return a value:

return log

* The problem is that I'm using the logger at module-level so I had in
each module:

logger = logging.getLogger(__name__)

but there is to use:

logger = logging.LoggerAdapter(
logging.getLogger(__name__), log.ExtraInfo())
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extra fields for logging

2009-12-25 Thread Steven D'Aprano
On Thu, 24 Dec 2009 05:06:48 -0800, Joan Miller wrote:

 I'm trying to add some extra fields to logging, I'm following this
 information [1] but it faills in my case.
[...]
 I get = KeyError: 'host'

Please post the entire traceback you get.



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extra fields for logging

2009-12-25 Thread Joan Miller
On 25 dic, 13:24, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:
 On Thu, 24 Dec 2009 05:06:48 -0800, Joan Miller wrote:
  I'm trying to add some extra fields to logging, I'm following this
  information [1] but it faills in my case.
 [...]
  I get = KeyError: 'host'

 Please post the entire traceback you get.

 --
 Steven

On 25 dic, 13:24, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:
 On Thu, 24 Dec 2009 05:06:48 -0800, Joan Miller wrote:
  I'm trying to add some extra fields to logging, I'm following this
  information [1] but it faills in my case.
 [...]
  I get = KeyError: 'host'

 Please post the entire traceback you get.

 --
 Steven

Traceback (most recent call last):
  File /usr/lib/python2.6/logging/__init__.py, line 768, in emit
msg = self.format(record)
  File /usr/lib/python2.6/logging/__init__.py, line 648, in format
return fmt.format(record)
  File /usr/lib/python2.6/logging/__init__.py, line 439, in format
s = self._fmt % record.__dict__
KeyError: 'host'
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extra fields for logging

2009-12-25 Thread Steven D'Aprano
On Fri, 25 Dec 2009 12:07:20 -0800, Joan Miller wrote:

 On 25 dic, 13:24, Steven D'Aprano st...@remove-this-
 cybersource.com.au wrote:
 On Thu, 24 Dec 2009 05:06:48 -0800, Joan Miller wrote:
  I'm trying to add some extra fields to logging, I'm following this
  information [1] but it faills in my case.
 [...]
  I get = KeyError: 'host'

 Please post the entire traceback you get.

 --
 Steven
 
 Traceback (most recent call last):
   File /usr/lib/python2.6/logging/__init__.py, line 768, in emit
 msg = self.format(record)
   File /usr/lib/python2.6/logging/__init__.py, line 648, in format
 return fmt.format(record)
   File /usr/lib/python2.6/logging/__init__.py, line 439, in format
 s = self._fmt % record.__dict__
 KeyError: 'host'


Hmmm... that wasn't as helpful as I had hoped. Oh well.

Going back to your earlier post, I can see a couple of problems.

Firstly, your __getitem__ method always returns None. You need to return 
the result.

Secondly, this works for me:


import logging
class ExtraInfo(object):
def __getitem__(self, name):
if name == 'host':
result = 'foo'
return result
def __iter__(self):
keys = ['host',]
keys.extend(self.__dict__.keys())
return iter(keys)  # better than keys.__iter__

def setup(filename='/tmp/foo.log'):
log = logging.LoggerAdapter(logging.getLogger('foo'), ExtraInfo())
logging.basicConfig(
level=logging.DEBUG,
format=Date-Time: %(asctime)s
Host: %(host)s
%(levelname)s:
%(message)s,
datefmt=%Y-%m-%dT%H:%M:%S%z,
filename=filename,
filemode='w')
return log

log = setup()
log.error('testing ...')
log.debug('something happened')
log.critical(it's the end of the world as we know it!)





Hope this helps.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Extra fields for logging

2009-12-24 Thread Joan Miller
I'm trying to add some extra fields to logging, I'm following this
information [1] but it faills in my case.

# module logger.py

import logging

class ExtraInfo(object):
def __getitem__(self, name):
if name == 'host':
result = 'foo'
def __iter__(self):
keys = ['host',]
keys.extend(self.__dict__.keys())
return keys.__iter__()

def setup(filename='/tmp/foo.log'):
log = logging.LoggerAdapter(logging.getLogger('foo'), ExtraInfo())
#log = logging.LoggerAdapter(logging.getLogger('foo'), {'host':
'bar'})

logging.basicConfig(
level=logging.DEBUG,
format=(
Date-Time: %(asctime)s\n
Host: %(host)s\n
%(levelname)s:\n
%(message)s),
# %f = microseconds is not showed, bug?
datefmt=%Y-%m-%dT%H:%M:%S%z,
filename=filename,
filemode='w')


# module another.py

import logger

logger.setup()
logging.getLogger('foo')
logging.error('testing ...')


I get = KeyError: 'host'


---
System: Ubuntu 9.10 - Python 2.6.4
---

[1] 
http://docs.python.org/library/logging.html#adding-contextual-information-to-your-logging-output
-- 
http://mail.python.org/mailman/listinfo/python-list