Cameron, Peter, Thank you. Your comments were spot on. Changing root logger got the logs spitting into the file. And i now can org these logs into one directory, instead of the current mess. Thank you!
On Oct 11, 2017 23:41, "Cameron Simpson" <c...@cskk.id.au> wrote: > 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