On 11Oct2017 22:27, Andrew Z <form...@gmail.com> wrote:
aha. So the issue is that main.py's __name__ attribute == "__main__" and
test.py is "test1.test".

Yeah. If you invoke a module as "python -m module_name" its __name__ field is "__main__". That makes the boilerplate work, but breaks your expectation that __name__ is usually module_name.

if i manually assign names:
main.py - >

log = logging.getLogger("MAIN")

test.py - >
log = logging.getLogger("MAIN.test1.test")

then logging is working perfectly well.

This brings me to the question - what is wrong with me file
naming/structure that confuses the logging module? I'm not sure i
really want to have each little file in it's own directory too..

I confess to not using the logging module in the module-named-based fashion that seems to be the default recommendation. I usually prefer to set up the root logger to log somewhere suitable to the main program (typically just stderr by default), and set up special logging for other things as needed.

As what may be a poor example, I've got a mail filing program which monitors maildirs for arriving messages to refile. So I've got a class associated with each monitored maildir with these methods:

 @property
 def logdir(self):
   ''' The pathname of the directory in which log files are written.
   '''
   varlog = cs.env.LOGDIR(self.environ)
   return os.path.join(varlog, 'mailfiler')

This essentially computes "$HOME/var/log/mailfiler" as the place where all the logfiles are saved. And this:

 def folder_logfile(self, folder_path):
   ''' Return path to log file associated with the named folder.
       TODO: base on relative path from folder root, not just basename.
   '''
   return os.path.join(self.logdir, '%s.log' % (os.path.basename(folder_path)))

which computes "$HOME/var/log/mailfiler/spool.log" as the logfile when working on my maildir "$HOME/mail/spool".

And then off it goes with a FileHandler for that path for the filing actions for that maildir.

So you're not contrained to drop log files all through your source tree (ewww!)

My opinion is that you should decide where your logfiles _should_ live; it generally has nothing (or little) to do with the module name. I keep mine, generally, in various subdirectories of "$HOME/var/log".

Cheers,
Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to