|
@@ -1,15 +1,17 @@
|
|
|
import argparse
|
|
|
import logging
|
|
|
+import warnings
|
|
|
|
|
|
from cvargparse.argument import Argument as Arg
|
|
|
from cvargparse.factory import BaseFactory
|
|
|
+from cvargparse.utils.logger_config import init_logging_handlers
|
|
|
|
|
|
class BaseParser(argparse.ArgumentParser):
|
|
|
|
|
|
- def __init__(self, arglist=[], nologging=False, sysargs=None, *args, **kw):
|
|
|
- self.__nologging = nologging
|
|
|
- self.__sysargs = sysargs
|
|
|
+ def __init__(self, arglist=[], nologging=False, *args, **kw):
|
|
|
+ self._nologging = nologging
|
|
|
self._groups = {}
|
|
|
+ self._args = None
|
|
|
|
|
|
super(BaseParser, self).__init__(*args, **kw)
|
|
|
|
|
@@ -17,17 +19,16 @@ class BaseParser(argparse.ArgumentParser):
|
|
|
|
|
|
if not self.has_logging: return
|
|
|
|
|
|
- group = self.add_argument_group("Logger arguments")
|
|
|
- group.add_argument(
|
|
|
- '--logfile', type=str, default='',
|
|
|
- help='file for logging output')
|
|
|
-
|
|
|
- group.add_argument(
|
|
|
- '--loglevel', type=str, default='INFO',
|
|
|
- help='logging level. see logging module for more information')
|
|
|
-
|
|
|
- self.__args = None
|
|
|
+ self.add_args([
|
|
|
+ Arg('--logfile', type=str, default='',
|
|
|
+ help='file for logging output'),
|
|
|
+ Arg('--loglevel', type=str, default='INFO',
|
|
|
+ help='logging level. see logging module for more information'),
|
|
|
+ ], group_name="Logger arguments")
|
|
|
|
|
|
+ @property
|
|
|
+ def args(self):
|
|
|
+ return self._args
|
|
|
|
|
|
def get_group(self, name):
|
|
|
return self._groups.get(name)
|
|
@@ -61,25 +62,34 @@ class BaseParser(argparse.ArgumentParser):
|
|
|
group.add_argument(*arg[0], **arg[1])
|
|
|
|
|
|
@property
|
|
|
- def args(self):
|
|
|
- if self.__args is None:
|
|
|
- self.__args = self.parse_args(self.__sysargs)
|
|
|
+ def has_logging(self):
|
|
|
+ return not self._nologging
|
|
|
|
|
|
- return self.__args
|
|
|
+ def parse_args(self, *args, **kwargs):
|
|
|
+ self._args = super(BaseParser, self).parse_args(*args, **kwargs)
|
|
|
|
|
|
+ if self.has_logging:
|
|
|
+ self._logging_config(self._args)
|
|
|
|
|
|
- @property
|
|
|
- def has_logging(self):
|
|
|
- return not self.__nologging
|
|
|
+ return self._args
|
|
|
+
|
|
|
+ def _logging_config(self, simple=False):
|
|
|
+
|
|
|
+ if self._args.logfile:
|
|
|
+ handler = logging.FileHandler(self._args.logfile, mode="w")
|
|
|
+ else:
|
|
|
+ handler = logging.StreamHandler()
|
|
|
|
|
|
- def init_logger(self, simple=False):
|
|
|
- if not self.has_logging: return
|
|
|
fmt = '%(message)s' if simple else '%(levelname)s - [%(asctime)s] %(filename)s:%(lineno)d [%(funcName)s]: %(message)s'
|
|
|
- logging.basicConfig(
|
|
|
- format=fmt,
|
|
|
- level=getattr(logging, self.args.loglevel.upper(), logging.DEBUG),
|
|
|
- filename=self.args.logfile or None,
|
|
|
- filemode="w")
|
|
|
+ if getattr(self._args, "debug", False):
|
|
|
+ lvl = logging.DEBUG
|
|
|
+ else:
|
|
|
+ lvl = getattr(logging, self._args.loglevel.upper(), logging.WARNING)
|
|
|
+
|
|
|
+ self._logger = init_logging_handlers([(handler, fmt, lvl)])
|
|
|
+
|
|
|
+ def init_logger(self, simple=False):
|
|
|
+ warnings.warn("This method does nothing since v0.3.0!")
|
|
|
|
|
|
|
|
|
class GPUParser(BaseParser):
|