Bugs item #1616422, was opened at 2006-12-15 14:30
Message generated for change (Comment added) made by vsajip
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1616422&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
>Status: Closed
Resolution: None
Priority: 5
Private: No
Submitted By: Tekkaman (simleo)
Assigned to: Vinay Sajip (vsajip)
Summary: Wrong pathname value in logging output

Initial Comment:
When trying to log caller pathname information, instead of the actual caller's 
name I get the full name of the logging module source file:

>>> import logging
>>> logging.basicConfig(format='%(pathname)s')
>>> logging.getLogger('').critical('foo')
/usr/lib/python2.4/logging/__init__.py
>>>

I've been discussing this on comp.lang.python and the suspect arised that this 
has something to do with a symlink in the path leading to the module source 
file (I have a lib -> lib64 symlink on my system). To verify this I copied the 
entire logging directory into my home dir and retried. This is what I got:

>>> import logging
>>> logging.basicConfig(format='%(pathname)s')
>>> logging.getLogger('').critical('foo')
<stdin>
>>>

Additional info:
Python Version: 2.4.3
OS: Gentoo Linux 2.6.17-r8
CPU: AMD Turion(tm) 64 Mobile Technology
sys.path: ['', '/usr/lib/portage/pym', '/usr/lib/python24.zip', 
'/usr/lib64/python2.4', '/usr/lib64/python2.4/plat-linux2', 
'/usr/lib64/python2.4/lib-tk', '/usr/lib64/python2.4/lib-dynload', 
'/usr/lib64/python2.4/site-packages', 
'/usr/lib64/python2.4/site-packages/Numeric', 
'/usr/lib64/python2.4/site-packages/dbus', 
'/usr/lib64/python2.4/site-packages/gtk-2.0']


----------------------------------------------------------------------

>Comment By: Vinay Sajip (vsajip)
Date: 2006-12-18 09:54

Message:
Logged In: YES 
user_id=308438
Originator: NO

Glad the problem's solved. It's not appropriate to change the current
behaviour of logging with respect to determining the source file of a
module, for a couple of reasons:

1) There are other problems caused by out-of-date .pyo and .pyc files
(every use of __file__ is potentially a problem) - which changing logging
would not solve. Logging uses __file__ how it is intended to be used.
2) Some systems are shipped with .pyo and .pyc files only - no .py files
are available (e.g. frozen systems).

----------------------------------------------------------------------

Comment By: Tekkaman (simleo)
Date: 2006-12-18 09:29

Message:
Logged In: YES 
user_id=1669352
Originator: YES

Deleting all .pyc and .pyo files solved the problem. Now I get the correct
behaviour. However, this is not an option for a machine on which one does
not have root privileges. Can the code be changed in such a way that it's
not fooled by outdated .pyc and .pyo files?

----------------------------------------------------------------------

Comment By: Vinay Sajip (vsajip)
Date: 2006-12-16 22:38

Message:
Logged In: YES 
user_id=308438
Originator: NO

Right, but I'm not sure the problem's in logging. Logging uses the
filename built into the compiled code objects as it walks up the stack,
looking for a filename which is not the source file of the logging package.
Try deleting all your .pyc and .pyo files (including the ones in the
logging package) and see if there is a change in behaviour; what value does
logging._srcFile have? Does it accord with what you would expect? The
symlink could mean that the compiled filename in the .pyc/.pyo is out of
date.

----------------------------------------------------------------------

Comment By: Tekkaman (simleo)
Date: 2006-12-16 19:03

Message:
Logged In: YES 
user_id=1669352
Originator: YES

I don't get <stdin>, I get "/usr/lib/python2.4/logging/__init__.py". I got
<stdin> (correct behaviour) only after copying the entire logging directory
in the same place where I started the interpreter.

----------------------------------------------------------------------

Comment By: Vinay Sajip (vsajip)
Date: 2006-12-15 17:20

Message:
Logged In: YES 
user_id=308438
Originator: NO

Sorry, why is this wrong? You are making the logging call from an
interactive prompt - so you would expect to get the pathname of <stdin>,
would you not?

I get the same output on Windows where the only logging module is the one
which is part of the standard Python installation.



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1616422&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to