PythonWin debugger holds onto global logging objects too long

Discussion in 'Python' started by Rob Richardson, Jan 24, 2012.

  1. I use PythonWin to debug the Python scripts we write. Our scripts often use the log2py logging package. When running the scripts inside the debugger, we seem to get one logging object for every time we run the script. The result is that after running the script five times, the log file contains five copies of every message. The only way I know to clean this up and get only a single copy of each message is to close PythonWin and restart it.

    What do I have to do in my scripts to clean up the logging objects so that I never get more than one copy of each message in my log files?

    Thank you very much!

    Rob Richardson
    Rob Richardson, Jan 24, 2012
    #1
    1. Advertising

  2. Rob Richardson

    Vinay Sajip Guest

    On Jan 24, 2:52 pm, Rob Richardson <> wrote:
    > I use PythonWin to debug the Python scripts we write.  Our scripts often use the log2pyloggingpackage.  When running the scripts inside the debugger, we seem to get oneloggingobject for every time we run the script.  The result is that after running the script five times, the log file contains five copies of every message.  The only way I know to clean this up and get only a single copy of each message is to close PythonWin and restart it.
    >
    > What do I have to do in my scripts to clean up theloggingobjects so that I never get more than one copy of each message in my log files?
    >


    I don't know what log2py is - Google didn't show up anything that
    looked relevant. If you're talking about the logging package in the
    Python standard library, I may be able to help: but a simple script
    that I ran in PythonWin didn't show any problems, so you'll probably
    need to post a short script which demonstrates the problem when run in
    PythonWin.

    Regards,

    Vinay Sajip
    Vinay Sajip, Feb 4, 2012
    #2
    1. Advertising

  3. Vinay Sajip wrote:
    > On Jan 24, 2:52 pm, Rob Richardson <> wrote:
    >
    >> I use PythonWin to debug the Python scripts we write. Our scripts often use the log2pyloggingpackage. When running the scripts inside the debugger, we seem to get oneloggingobject for every time we run the script. The result is that after running the script five times, the log file contains five copies of every message. The only way I know to clean this up and get only a single copy of each message is to close PythonWin and restart it.
    >>
    >> What do I have to do in my scripts to clean up theloggingobjects so that I never get more than one copy of each message in my log files?
    >>
    >>

    >
    > I don't know what log2py is - Google didn't show up anything that
    > looked relevant. If you're talking about the logging package in the
    > Python standard library, I may be able to help: but a simple script
    > that I ran in PythonWin didn't show any problems, so you'll probably
    > need to post a short script which demonstrates the problem when run in
    > PythonWin.
    >
    > Regards,
    >
    > Vinay Sajip
    >

    Same here, can't find anything about log2py.
    Anyway it's possible that your pythonwin does not spawn a clean python
    interpreter for every run, keeping the same one.

    So you could possibly keep adding log handlers to your loggers because
    they may be static objects (like for the standard logging module).
    One solution would be to empty your logger handler list before adding any.

    I'm just guessing though, difficult to know without any info on log2py.

    JM
    Jean-Michel Pichavant, Feb 7, 2012
    #3
  4. Rob Richardson

    Mark Hammond Guest

    On 7/02/2012 9:48 PM, Jean-Michel Pichavant wrote:
    > Vinay Sajip wrote:
    >> On Jan 24, 2:52 pm, Rob Richardson <> wrote:
    >>> I use PythonWin to debug the Python scripts we write. Our scripts
    >>> often use the log2pyloggingpackage. When running the scripts inside
    >>> the debugger, we seem to get oneloggingobject for every time we run
    >>> the script. The result is that after running the script five times,
    >>> the log file contains five copies of every message. The only way I
    >>> know to clean this up and get only a single copy of each message is
    >>> to close PythonWin and restart it.
    >>>
    >>> What do I have to do in my scripts to clean up theloggingobjects so
    >>> that I never get more than one copy of each message in my log files?
    >>>

    >>
    >> I don't know what log2py is - Google didn't show up anything that
    >> looked relevant. If you're talking about the logging package in the
    >> Python standard library, I may be able to help: but a simple script
    >> that I ran in PythonWin didn't show any problems, so you'll probably
    >> need to post a short script which demonstrates the problem when run in
    >> PythonWin.
    >>
    >> Regards,
    >>
    >> Vinay Sajip

    > Same here, can't find anything about log2py.
    > Anyway it's possible that your pythonwin does not spawn a clean python
    > interpreter for every run, keeping the same one.


    That is what everyone's pythonwin does :) It always works "in process"
    - not ideal, but also likely to not change.

    Cheers,

    Mark

    >
    > So you could possibly keep adding log handlers to your loggers because
    > they may be static objects (like for the standard logging module).
    > One solution would be to empty your logger handler list before adding any.
    >
    > I'm just guessing though, difficult to know without any info on log2py.
    >
    > JM
    Mark Hammond, Feb 7, 2012
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page