diff --git a/cloudpickle/cloudpickle.py b/cloudpickle/cloudpickle.py index 030d44a3f..0a9323b17 100644 --- a/cloudpickle/cloudpickle.py +++ b/cloudpickle/cloudpickle.py @@ -49,6 +49,7 @@ import itertools import opcode import operator +import logging import pickle import struct import sys @@ -790,6 +791,10 @@ def save_not_implemented(self, obj): dispatch[type(Ellipsis)] = save_ellipsis dispatch[type(NotImplemented)] = save_not_implemented + def save_logger(self, obj): + self.save_reduce(logging.getLogger, (obj.name,), obj=obj) + dispatch[logging.Logger] = save_logger + """Special functions for Add-on libraries""" def inject_addons(self): """Plug in system. Register additional pickling functions if modules already loaded""" diff --git a/tests/cloudpickle_test.py b/tests/cloudpickle_test.py index 19f1faf1f..2b930548c 100644 --- a/tests/cloudpickle_test.py +++ b/tests/cloudpickle_test.py @@ -1,6 +1,7 @@ from __future__ import division import imp import unittest +import logging import pytest import pickle import sys @@ -507,6 +508,12 @@ def test_cell_manipulation(self): msg='cell contents not set correctly', ) + def test_logger(self): + log1 = logging.getLogger('name') + + log2 = pickle_depickle(log1) + self.assertEqual(log1.name, log2.name) + if __name__ == '__main__': unittest.main()