Re: How to prevent logging warning?

2005-10-25 Thread Vinay Sajip
I have now checked a change into CVS whereby the one-off error message
is not printed unless raiseExceptions is 1. The default behaviour is
thus unchanged, but if you set raiseExceptions to 0 for production use
and then don't configure any handlers, then the message is not printed.

Regards,

Vinay Sajip

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


Re: How to prevent logging warning?

2005-10-06 Thread Thomas Heller
Vinay Sajip [EMAIL PROTECTED] writes:

 Thomas Heller wrote:

 I get the behaviour that I want when I add a 'NULL' handler in the
 library, but is this really how logging is intended to be used?


 The reason for the one-off message is that without it, a
 misconfiguration or a failure to configure any handlers is notified to
 a user (who is possibly not used to the logging package). I'm not sure
 which is more annoying - a one-off message which occurs when no
 handlers are configured and yet events are logged, or complete silence
 from logging when something is misconfigured, and not giving any
 feedback on what's wrong? (It's a rhetorical question - the answer is
 of course quite subjective).

I do *not* think 'no handler' is a misconfiguration. Is it possible to
differentiate between a misconfiguration and 'no configuration'?

 Certainly, I could change things so that e.g. the error is suppressed
 when logging.raiseExceptions is set to 0 (typically for production
 use).

That would be fine.  But there are also other ways - you could, for
example, print the warning only when __debug__ is False.  And you could
use the warnings module instead of blindly printing to stderr, this way
it could also be filtered out.

BTW: Since I have your attention now, is the graphical utility to
configure the logging.conf file still available somewhere, and
compatible with the current logging package (with 'current' I mean
the one included with Python 2.3.5)?

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


Re: How to prevent logging warning?

2005-10-06 Thread Vinay Sajip
Thomas Heller wrote:

 I do *not* think 'no handler' is a misconfiguration. Is it possible to
 differentiate between a misconfiguration and 'no configuration'?

It's a fair point. The line was more blurred when the logging package
was newly released into the wild ;-) But no configuration could be
caused e.g. by an unreadable config file, which might also be
categorised as a misconfiguration.

 That would be fine.  But there are also other ways - you could, for
 example, print the warning only when __debug__ is False.  And you could
 use the warnings module instead of blindly printing to stderr, this way
 it could also be filtered out.

Compatibility with 1.5.2 precludes use of the warnings module. If using
raiseExceptions meets your requirement, I'll use that. I'm not sure
it's a good idea for the behaviour to change between running with and
without -O.

 BTW: Since I have your attention now, is the graphical utility to
 configure the logging.conf file still available somewhere, and
 compatible with the current logging package (with 'current' I mean
 the one included with Python 2.3.5)?

You can always get my attention via email :-) The graphical utility
(logconf.py) is available from the download at

http://www.red-dove.com/python_logging.html#download

AFAIK it should work OK with 2.3.5, though I haven't tested it recently
as there wasn't much interest in it. In fact you're the first person to
ask! It generates a few extra entries in the config file which are used
by the utility only, which are seemingly regarded as cruft by most
people.

Regards,


Vinay Sajip

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


How to prevent logging warning?

2005-10-05 Thread Thomas Heller
I'm about to add some logging calls to a library I have.  How can I
prevent that the script that uses the library prints
'No handlers could be found for logger comtypes.client' when the
script runs?

I would like to setup the logging so that there is no logging when
nothing is configured, and no warning messages are printed.

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


Re: How to prevent logging warning?

2005-10-05 Thread Maksim Kasimov

may be this you will find usefull:

def getLog(logName, fileName = None):

 if fileName:
 hdl = logging.FileHandler(fileName)
 else:
 hdl = logging.StreamHandler()

 fmt = 
logging.Formatter(%(name)s:\t%(levelname)s:\t%(asctime)s:\t%(message)s)
 hdl.setFormatter(fmt)
 log = logging.getLogger(logName)
 log.addHandler(hdl)

 return log


Thomas Heller wrote:
 I'm about to add some logging calls to a library I have.  How can I
 prevent that the script that uses the library prints
 'No handlers could be found for logger comtypes.client' when the
 script runs?
 
 I would like to setup the logging so that there is no logging when
 nothing is configured, and no warning messages are printed.
 
 Thomas


-- 
Best regards,
Maksim Kasimov
mailto: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to prevent logging warning?

2005-10-05 Thread Thomas Heller
 Thomas Heller wrote:
 I'm about to add some logging calls to a library I have.  How can I
 prevent that the script that uses the library prints
 'No handlers could be found for logger comtypes.client' when the
 script runs?
 I would like to setup the logging so that there is no logging when
 nothing is configured, and no warning messages are printed.

Maksim Kasimov [EMAIL PROTECTED] writes:

 may be this you will find usefull:

 def getLog(logName, fileName = None):

  if fileName:
  hdl = logging.FileHandler(fileName)
  else:
  hdl = logging.StreamHandler()

  fmt = 
 logging.Formatter(%(name)s:\t%(levelname)s:\t%(asctime)s:\t%(message)s)
  hdl.setFormatter(fmt)
  log = logging.getLogger(logName)
  log.addHandler(hdl)

  return log

Not really - I know how to set up handlers, but I think it should be
optional. Assume I have

  log = logging.getLogger(comtypes.client)

and later

  log.warn(foo bar)

in the library code.

If I use the library an my script, I get the warning that I mentioned
above.  I want the script by default to be agnostic about the libraries
logging.  When I want to see the log messages, I can always do

  logging.basicConfig()

in the script to see the log messages.

I get the behaviour that I want when I add a 'NULL' handler in the
library, but is this really how logging is intended to be used?

library
log = logging.getLogger(comtypes.client)

class NULLHandler(logging.Handler):
def emit(self, *args):
pass

log.addHandler(NULLHandler())
/library

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


Re: How to prevent logging warning?

2005-10-05 Thread Neil Benn
Thomas Heller wrote:

Thomas Heller wrote:


I'm about to add some logging calls to a library I have.  How can I
prevent that the script that uses the library prints
'No handlers could be found for logger comtypes.client' when the
script runs?
I would like to setup the logging so that there is no logging when
nothing is configured, and no warning messages are printed.
  


Maksim Kasimov [EMAIL PROTECTED] writes:

  

may be this you will find usefull:

def getLog(logName, fileName = None):

 if fileName:
 hdl = logging.FileHandler(fileName)
 else:
 hdl = logging.StreamHandler()

 fmt = 
 logging.Formatter(%(name)s:\t%(levelname)s:\t%(asctime)s:\t%(message)s)
 hdl.setFormatter(fmt)
 log = logging.getLogger(logName)
 log.addHandler(hdl)

 return log



Not really - I know how to set up handlers, but I think it should be
optional. Assume I have

  log = logging.getLogger(comtypes.client)

and later

  log.warn(foo bar)

in the library code.

If I use the library an my script, I get the warning that I mentioned
above.  I want the script by default to be agnostic about the libraries
logging.  When I want to see the log messages, I can always do

  logging.basicConfig()

in the script to see the log messages.

I get the behaviour that I want when I add a 'NULL' handler in the
library, but is this really how logging is intended to be used?

library
log = logging.getLogger(comtypes.client)

class NULLHandler(logging.Handler):
def emit(self, *args):
pass

log.addHandler(NULLHandler())
/library

Thomas
  

Hello,

  Absolutley not, I have exactly the same problem and it is 
really annoying.  The logging handlers should be set from an external 
config file and not explicitly in the code.  I simply had to just live 
with it, it's annoying but there is nothing you can do about it (short 
of playing around with stdout but avoiding that is why you used logging 
in the first place!).

Cheers,

Neil

-- 

Neil Benn
Senior Automation Engineer
Cenix BioScience
BioInnovations Zentrum
Tatzberg 46
D-01307
Dresden
Germany

Tel : +49 (0)351 4173 154
e-mail : [EMAIL PROTECTED]
Cenix Website : http://www.cenix-bioscience.com

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


Re: How to prevent logging warning?

2005-10-05 Thread Trent Mick
[Thomas Heller wrote]
 I'm about to add some logging calls to a library I have.  How can I
 prevent that the script that uses the library prints
 'No handlers could be found for logger comtypes.client' when the
 script runs?
 
 I would like to setup the logging so that there is no logging when
 nothing is configured, and no warning messages are printed.

This is probably a gross hack, but then I think one could argue that the
one-time No handlers could be found for warning is a misfeature -- at
least without a clean way to suppress it. I don't know the history of
that warning though:


-- mylib.py ---
import logging
log = logging.getLogger(mylib)
def func():
log.warn(don't go near the river)
log.error(I'm drowning!)
--


-- myscript.py ---
import sys
import logging
import mylib

if __name__ == __main__:
if -v in sys.argv:
logging.basicConfig()
else:
logging.Logger.manager.emittedNoHandlerWarning = True
mylib.func()
--


$ python myscript.py

$ python myscript.py -v
WARNING:mylib:don't go near the river
ERROR:mylib:I'm drowning!


hackily yours,
Trent

-- 
Trent Mick
[EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to prevent logging warning?

2005-10-05 Thread Peter Otten
Thomas Heller wrote:

 I want the script by default to be agnostic about the libraries
 logging.  When I want to see the log messages, I can always do
 
 logging.basicConfig()
 
 in the script to see the log messages.
 
 I get the behaviour that I want when I add a 'NULL' handler in the
 library, but is this really how logging is intended to be used?

I would support ...err, what's the opposite of a feature request?
Anyway, another hack, slightly more lightweight/intrusive:

logging.root.manager.emittedNoHandlerWarning = True

Peter

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


Re: How to prevent logging warning?

2005-10-05 Thread Vinay Sajip

Thomas Heller wrote:

 I get the behaviour that I want when I add a 'NULL' handler in the
 library, but is this really how logging is intended to be used?


The reason for the one-off message is that without it, a
misconfiguration or a failure to configure any handlers is notified to
a user (who is possibly not used to the logging package). I'm not sure
which is more annoying - a one-off message which occurs when no
handlers are configured and yet events are logged, or complete silence
from logging when something is misconfigured, and not giving any
feedback on what's wrong? (It's a rhetorical question - the answer is
of course quite subjective).

Certainly, I could change things so that e.g. the error is suppressed
when logging.raiseExceptions is set to 0 (typically for production
use).

Regards,

Vinay Sajip

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


Re: How to prevent logging warning?

2005-10-05 Thread Vinay Sajip
s/without/with/

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