Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions cloudpickle/cloudpickle.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
import itertools
import opcode
import operator
import logging
import pickle
import struct
import sys
Expand Down Expand Up @@ -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"""
Expand Down
7 changes: 7 additions & 0 deletions tests/cloudpickle_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import division
import imp
import unittest
import logging
import pytest
import pickle
import sys
Expand Down Expand Up @@ -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()