[Twisted-Python] Logging to both console and file (using twisted logging API)?

naman jain namanvit at gmail.com
Thu Nov 5 03:59:29 EST 2009


People,

Can anyone help me with this issue?

log.startLogging(open(logname,'w')
or
log.startLogging(open(logname,'w'), setStdout=True)

Both print the console output in the log. But nothing is displayed on
console! So I get a empty console
I would like to keep the console going also:

Precisely:
Console -> gets the print calls                             Not Happening
Log       -> gets the print calls + log.msg calls      Happening

I understand that this might be a trivial issue, but I am not able to figure
it out in the documentation available :(

Thanks for any help

Regards
Naman

On Wed, Nov 4, 2009 at 7:43 AM, naman jain <namanvit at gmail.com> wrote:

> Hi,
>
> Using  log.startLogging(open(logname, 'w'), setStdout=False)
> very well solves the issue.. of stdout remaining untouched and log.msg()
> calls going to log
>
> Can we do this ?:
> Log file gets -> both the log.msg() calls , the stdout +stderr
> console -> gets stdout +stderr as usual
>
> Regards
> Naman
>
>
>
> On Fri, Oct 30, 2009 at 9:25 PM, David Bolen <db3l.net at gmail.com> wrote:
>
>> naman jain <namanvit at gmail.com> writes:
>>
>> > I wanted to log in a file and keep the console also going with it.
>>
>> I can read this as either:
>>
>>  * Keep file logs and stdout/console completely separate, or
>>  * File gets explicit logs and copies of stdout, but stdout also goes to
>>    console as well.
>>
>> The latter is something I'd more commonly do, but the former is what
>> you explain further below with your rules.
>>
>> > I am using
>> > log.startLogging(open(logname, 'w'))
>> >
>> > whatever documentation I could find about this API, it suggested me to
>> pass
>> > setStdout=False(in order to keep stdout away from putting into log)
>> > somewhere in the startlogging function.
>> >
>> > Something like this I tried:
>> > log.startLogging(sys.stdout,setStdout=False)
>>
>> Why did you switch to sys.stdout here?  While this will prevent
>> sys.stdout and sys.stderr from being redirected, it will use
>> sys.stdout for any log.msg() calls, so nothing would end up in your
>> log file.
>>
>> > Doesnt help in solving the problem of getting both things:
>> >
>> > Requirement:
>> > log.msg("messageforlog")    -> goes to log
>> > print "message for console" -> goes to console
>> >
>> > Could anyone give some ideas on this?
>>
>> I think you had the right idea with setStdout, but changed more than
>> just that when you tested it.  If you use a call like
>> log.startLogging(open(logname, 'w'), setStdout=False) I believe you'll
>> get what you want.  Only calls to log.msg() will go to the file, and
>> stdout/stderr will be left unchanged.
>>
>> -- David
>>
>>
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20091105/a4526509/attachment.htm 


More information about the Twisted-Python mailing list