Skip to content

Commit 00a9adb

Browse files
authored
Fixed multiple log handlers (#46)
During hyperparameter optimisation of a hiclass classifier, HierarchicalClassifier._create_logger() adds a new StreamHandler to the logger every time it is instantiated. This means that on the nth iteration, every log line in the console is repeated n times. By checking if a hander is already set on the logger, we can skip adding another one when we call _create_logger()
1 parent ed353d8 commit 00a9adb

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

hiclass/HierarchicalClassifier.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,20 @@ def _create_logger(self):
156156
self.logger_.setLevel(self.verbose)
157157

158158
# Create console handler and set verbose level
159-
ch = logging.StreamHandler()
160-
ch.setLevel(self.verbose)
159+
if not self.logger_.hasHandlers():
160+
ch = logging.StreamHandler()
161+
ch.setLevel(self.verbose)
161162

162-
# Create formatter
163-
formatter = logging.Formatter(
164-
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
165-
)
163+
# Create formatter
164+
formatter = logging.Formatter(
165+
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
166+
)
166167

167-
# Add formatter to ch
168-
ch.setFormatter(formatter)
168+
# Add formatter to ch
169+
ch.setFormatter(formatter)
169170

170-
# Add ch to logger
171-
self.logger_.addHandler(ch)
171+
# Add ch to logger
172+
self.logger_.addHandler(ch)
172173

173174
def _disambiguate(self):
174175
self.separator_ = "::HiClass::Separator::"

0 commit comments

Comments
 (0)