Skip to content

Commit e8d40a1

Browse files
committed
Merge pull request #1281 from geekerzp/python_log
[Python] Fix issue in python client
2 parents 69f8274 + 13c0793 commit e8d40a1

File tree

4 files changed

+93
-60
lines changed

4 files changed

+93
-60
lines changed

modules/swagger-codegen/src/main/resources/python/api_client.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ from .rest import ApiException
2525

2626
import os
2727
import re
28+
import sys
2829
import urllib
2930
import json
3031
import mimetypes

modules/swagger-codegen/src/main/resources/python/configuration.mustache

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Copyright 2015 SmartBear Software
1515
See the License for the specific language governing permissions and
1616
limitations under the License.
1717

18-
ref: https://github.com/swagger-api/swagger-codegen
18+
ref: https://github.com/swagger-api/swagger-codegen
1919
"""
2020

2121
from __future__ import absolute_import
@@ -27,10 +27,11 @@ try:
2727
except ImportError:
2828
# for python3
2929
import http.client as httplib
30-
30+
3131
import sys
3232
import logging
3333

34+
from six import iteritems
3435

3536
def singleton(cls, *args, **kw):
3637
instances = {}
@@ -72,36 +73,23 @@ class Configuration(object):
7273
self.password = ""
7374

7475
# Logging Settings
76+
self.logger = {}
77+
self.logger["package_logger"] = logging.getLogger("{{packageName}}")
78+
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
79+
# Log format
7580
self.logging_format = '%(asctime)s %(levelname)s %(message)s'
7681
# Debug file location
77-
self.__logging_file = None
82+
self.logging_stream_handler = None
83+
self.logging_file_handler = None
84+
self.logging_file = None
7885
# Debug switch
79-
self.__debug = False
80-
self.init_logger()
86+
self.debug = False
8187

8288
# SSL/TLS verification
8389
# Set this to false to skip verifying SSL certificate when calling API from https server.
8490
self.verify_ssl = True
8591
# Set this to customize the certificate file to verify the peer.
8692
self.ssl_ca_cert = None
87-
88-
def init_logger(self):
89-
"""
90-
Initializes logger settings.
91-
"""
92-
self.logger = logging.getLogger()
93-
formatter = logging.Formatter(self.logging_format)
94-
stream_handler = logging.StreamHandler()
95-
stream_handler.setFormatter(formatter)
96-
self.logger.addHandler(stream_handler)
97-
if self.__debug:
98-
self.logger.setLevel(logging.DEBUG)
99-
else:
100-
self.logger.setLevel(logging.WARNING)
101-
if self.__logging_file:
102-
file_handler = logging.FileHandler(self.__logging_file)
103-
file_handler.setFormatter(formatter)
104-
self.logger.addFilter(file_handler)
10593

10694
@property
10795
def logging_file(self):
@@ -111,10 +99,23 @@ class Configuration(object):
11199
def logging_file(self, value):
112100
self.__logging_file = value
113101
if self.__logging_file:
114-
formater = logging.Formatter(self.logging_format)
115-
file_handler = logging.FileHandler(self.__logging_file)
116-
file_handler.setFormatter(formater)
117-
self.logger.addHandler(file_handler)
102+
# If set logging file,
103+
# then add file handler and remove stream handler.
104+
self.logging_file_handler = logging.FileHandler(self.__logging_file)
105+
self.logging_file_handler.setFormatter(self.logging_formatter)
106+
for _, logger in iteritems(self.logger):
107+
logger.addHandler(self.logging_file_handler)
108+
if self.logging_stream_handler:
109+
logger.removeHandler(self.logging_stream_handler)
110+
else:
111+
# If not set logging file,
112+
# then add stream handler and remove file handler.
113+
self.logging_stream_handler = logging.StreamHandler()
114+
self.logging_stream_handler.setFormatter(self.logging_formatter)
115+
for _, logger in iteritems(self.logger):
116+
logger.addHandler(self.logging_stream_handler)
117+
if self.logging_file_handler:
118+
logger.removeHandler(self.logging_file_handler)
118119

119120
@property
120121
def debug(self):
@@ -125,13 +126,26 @@ class Configuration(object):
125126
self.__debug = value
126127
if self.__debug:
127128
# if debug status is True, turn on debug logging
128-
self.logger.setLevel(logging.DEBUG)
129+
for _, logger in iteritems(self.logger):
130+
logger.setLevel(logging.DEBUG)
129131
# turn on httplib debug
130132
httplib.HTTPConnection.debuglevel = 1
131133
else:
132134
# if debug status is False, turn off debug logging,
133135
# setting log level to default `logging.WARNING`
134-
self.logger.setLevel(logging.WARNING)
136+
for _, logger in iteritems(self.logger):
137+
logger.setLevel(logging.WARNING)
138+
# turn off httplib debug
139+
httplib.HTTPConnection.debuglevel = 0
140+
141+
@property
142+
def logging_format(self):
143+
return self.__logging_format
144+
145+
@logging_format.setter
146+
def logging_format(self, value):
147+
self.__logging_format = value
148+
self.logging_formatter = logging.Formatter(self.__logging_format)
135149

136150
def get_api_key_with_prefix(self, identifier):
137151
"""

samples/client/petstore/python/swagger_client/api_client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import os
2727
import re
28+
import sys
2829
import urllib
2930
import json
3031
import mimetypes
@@ -180,16 +181,19 @@ def sanitize_for_serialization(self, obj):
180181
If obj is str, int, float, bool, return directly.
181182
If obj is datetime.datetime, datetime.date
182183
convert to string in iso8601 format.
183-
If obj is list, santize each element in the list.
184+
If obj is list, sanitize each element in the list.
184185
If obj is dict, return the dict.
185186
If obj is swagger model, return the properties dict.
186187
187188
:param obj: The data to serialize.
188189
:return: The serialized form of data.
189190
"""
191+
types = (str, int, float, bool, tuple)
192+
if sys.version_info < (3,0):
193+
types = types + (unicode,)
190194
if isinstance(obj, type(None)):
191195
return None
192-
elif isinstance(obj, (str, int, float, bool, tuple)):
196+
elif isinstance(obj, types):
193197
return obj
194198
elif isinstance(obj, list):
195199
return [self.sanitize_for_serialization(sub_obj)

samples/client/petstore/python/swagger_client/configuration.py

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
See the License for the specific language governing permissions and
1616
limitations under the License.
1717
18-
ref: https://github.com/swagger-api/swagger-codegen
18+
ref: https://github.com/swagger-api/swagger-codegen
1919
"""
2020

2121
from __future__ import absolute_import
@@ -27,10 +27,11 @@
2727
except ImportError:
2828
# for python3
2929
import http.client as httplib
30-
30+
3131
import sys
3232
import logging
3333

34+
from six import iteritems
3435

3536
def singleton(cls, *args, **kw):
3637
instances = {}
@@ -72,36 +73,23 @@ def __init__(self):
7273
self.password = ""
7374

7475
# Logging Settings
76+
self.logger = {}
77+
self.logger["package_logger"] = logging.getLogger("swagger_client")
78+
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
79+
# Log format
7580
self.logging_format = '%(asctime)s %(levelname)s %(message)s'
7681
# Debug file location
77-
self.__logging_file = None
82+
self.logging_stream_handler = None
83+
self.logging_file_handler = None
84+
self.logging_file = None
7885
# Debug switch
79-
self.__debug = False
80-
self.init_logger()
86+
self.debug = False
8187

8288
# SSL/TLS verification
8389
# Set this to false to skip verifying SSL certificate when calling API from https server.
8490
self.verify_ssl = True
8591
# Set this to customize the certificate file to verify the peer.
8692
self.ssl_ca_cert = None
87-
88-
def init_logger(self):
89-
"""
90-
Initializes logger settings.
91-
"""
92-
self.logger = logging.getLogger()
93-
formatter = logging.Formatter(self.logging_format)
94-
stream_handler = logging.StreamHandler()
95-
stream_handler.setFormatter(formatter)
96-
self.logger.addHandler(stream_handler)
97-
if self.__debug:
98-
self.logger.setLevel(logging.DEBUG)
99-
else:
100-
self.logger.setLevel(logging.WARNING)
101-
if self.__logging_file:
102-
file_handler = logging.FileHandler(self.__logging_file)
103-
file_handler.setFormatter(formatter)
104-
self.logger.addFilter(file_handler)
10593

10694
@property
10795
def logging_file(self):
@@ -111,10 +99,23 @@ def logging_file(self):
11199
def logging_file(self, value):
112100
self.__logging_file = value
113101
if self.__logging_file:
114-
formater = logging.Formatter(self.logging_format)
115-
file_handler = logging.FileHandler(self.__logging_file)
116-
file_handler.setFormatter(formater)
117-
self.logger.addHandler(file_handler)
102+
# If set logging file,
103+
# then add file handler and remove stream handler.
104+
self.logging_file_handler = logging.FileHandler(self.__logging_file)
105+
self.logging_file_handler.setFormatter(self.logging_formatter)
106+
for _, logger in iteritems(self.logger):
107+
logger.addHandler(self.logging_file_handler)
108+
if self.logging_stream_handler:
109+
logger.removeHandler(self.logging_stream_handler)
110+
else:
111+
# If not set logging file,
112+
# then add stream handler and remove file handler.
113+
self.logging_stream_handler = logging.StreamHandler()
114+
self.logging_stream_handler.setFormatter(self.logging_formatter)
115+
for _, logger in iteritems(self.logger):
116+
logger.addHandler(self.logging_stream_handler)
117+
if self.logging_file_handler:
118+
logger.removeHandler(self.logging_file_handler)
118119

119120
@property
120121
def debug(self):
@@ -125,13 +126,26 @@ def debug(self, value):
125126
self.__debug = value
126127
if self.__debug:
127128
# if debug status is True, turn on debug logging
128-
self.logger.setLevel(logging.DEBUG)
129+
for _, logger in iteritems(self.logger):
130+
logger.setLevel(logging.DEBUG)
129131
# turn on httplib debug
130132
httplib.HTTPConnection.debuglevel = 1
131133
else:
132134
# if debug status is False, turn off debug logging,
133135
# setting log level to default `logging.WARNING`
134-
self.logger.setLevel(logging.WARNING)
136+
for _, logger in iteritems(self.logger):
137+
logger.setLevel(logging.WARNING)
138+
# turn off httplib debug
139+
httplib.HTTPConnection.debuglevel = 0
140+
141+
@property
142+
def logging_format(self):
143+
return self.__logging_format
144+
145+
@logging_format.setter
146+
def logging_format(self, value):
147+
self.__logging_format = value
148+
self.logging_formatter = logging.Formatter(self.__logging_format)
135149

136150
def get_api_key_with_prefix(self, identifier):
137151
"""

0 commit comments

Comments
 (0)