Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #4300
| From | "ivdneut@gmail.com" <ivdneut@gmail.com> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: unpickling derived LogRecord in python 2.7 from python2.6 |
| Date | 2011-04-29 01:36 -0700 |
| Organization | http://groups.google.com |
| Message-ID | <632d00c3-3dc8-4a10-8ce8-579b5cfcb2e7@j31g2000yqe.googlegroups.com> (permalink) |
| References | <dddb61de-6964-41c4-9f14-d9d1d5fdb2b7@cu4g2000vbb.googlegroups.com> <ip9gtg$s9p$1@solani.org> <bb7009bd-e93d-470e-9077-9fa12046dd7f@q20g2000vbx.googlegroups.com> <ipb4hd$9rf$1@solani.org> |
On Apr 28, 9:22 am, Peter Otten <__pete...@web.de> wrote: > Vinay Sajip wrote: > > On Apr 27, 5:41 pm, Peter Otten <__pete...@web.de> wrote: > > >> The Problem is that as of Python 2.7logging.LogRecord has become a > >> newstyle class which is pickled/unpickled differently. I don't know if > >> there is an official way to do the conversion, but here's what I've > >> hacked up. The script can read pickles written with 2.6 in 2.7, but not > >> the other way round. > >> [code snipped] > > > I don't know about "official", but another way of doing this is to > > pickle just the LogRecord's __dict__ and send that over the wire. The > > logging package contains a function makeLogRecord(d) where d is a > > dict. > > You are right, my approach is too complicated and only needed when the OP > cannot modify the sending script -- which is unlikely. > > > This is the approach used by the examples in the library documentation > > which pickle events for sending across a network: > > >http://docs.python.org/howto/logging-cookbook.html#sending-and-receiv... > > logging-events-across-a-network > > > > > The built-in SocketHandler pickles the LogRecord's __dict__ rather > > than the LogRecord itself, precisely because of the improved > > interoperability over pickling the instance directly. > > As a minimal change ensuring that the logging.LogRecord subclass used by the > OP is a newstyle class in 2.6 with > > class LogRecord(logging.LogRecord, object): > #... > > should work, too. I tried this, but it didn't work. Pickling the __dict__ and then use makeLogRecord does the trick. Thank you very much for the excellent help, Ian.
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar
unpickling derived LogRecord in python 2.7 from python2.6 "ivdneut@gmail.com" <ivdneut@gmail.com> - 2011-04-27 06:56 -0700
Re: unpickling derived LogRecord in python 2.7 from python2.6 Peter Otten <__peter__@web.de> - 2011-04-27 18:41 +0200
Re: unpickling derived LogRecord in python 2.7 from python2.6 Vinay Sajip <vinay_sajip@yahoo.co.uk> - 2011-04-27 13:39 -0700
Re: unpickling derived LogRecord in python 2.7 from python2.6 Peter Otten <__peter__@web.de> - 2011-04-28 09:22 +0200
Re: unpickling derived LogRecord in python 2.7 from python2.6 "ivdneut@gmail.com" <ivdneut@gmail.com> - 2011-04-29 01:36 -0700
csiph-web