logger output

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Mon May 5 18:44:30 EDT 2008


En Mon, 05 May 2008 13:02:12 -0300, skunkwerk <skunkwerk at gmail.com> escribió:

> On May 4, 10:40 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> wrote:
>> En Mon, 05 May 2008 00:33:12 -0300,skunkwerk<skunkw... at gmail.com> escribió:
>>
>> > i'm redirecting the stdout & stderr of my python program to a log.
>> > Tests i've done on a simple program with print statements, etc. work
>> > fine.  however, in my actual program i get weird output like this:
>>
>> > 2008-05-04 20:20:44,790 DEBUG Grabbing message from queue, if any
>> > 2008-05-04 20:20:44,790 DEBUG DEBUG:doit:Grabbing message from queue,
>> > if any
>> > 2008-05-04 20:20:44,790 DEBUG DEBUG:doit:DEBUG:doit:Grabbing message
>>
>> Try this simplified example and see by yourself:
>>
>> import sys
>>
>> class Write2Log:
>>      def write(self, x):
>>          sys.__stdout__.write('[%s]' % x)
>>
>> sys.stdout = Write2Log()
>>
>> print "Hello world!"
>> age = 27
>> name = "John"
>> print "My name is", name, "and I am", age, "years old."
>
> thanks Gabriel,
>    i tried the code you sent and got output like the following:
> [My name is][][john][][and I am][][27][][years old.]
>
> it doesn't really help me though.  does this have any advantages over
> the syntax i was using?
> are there any limits on what kind of objects the logger can write?  ie
> ascii strings of any length?

The example doesn't use any logger, so loggers aren't the problem here, ok?

The write function above puts square brackets [] around anything it receives. This way you can see exactly how write() is called: once per *item* in the print statement, plus once per comma used (with an space character that you didn't copy correctly).

Back to your original code, you have to call logger.debug with a *line* of text, but you are calling it with many small pieces - that's the problem. Accumulate output until you see a '\n' - then join all the pieces into a single, complete line and finally call logger.debug

-- 
Gabriel Genellina




More information about the Python-list mailing list