Setup logging

This commit is contained in:
Florent Guiotte 2018-04-24 11:43:18 +02:00
parent 8f38866761
commit 61cc924e56
8 changed files with 99 additions and 4 deletions

View File

@ -19,6 +19,7 @@ import triskele
class AttributeProfiles(Filter): class AttributeProfiles(Filter):
def __init__(self, area=None, sd=None, moi=None): def __init__(self, area=None, sd=None, moi=None):
super().__init__(self.__class__.__name__) super().__init__(self.__class__.__name__)
self.logger.debug('Oh hi Mark!')
self.area = np.sort(area) if area is not None else None self.area = np.sort(area) if area is not None else None
self.sd = np.sort(sd) if sd is not None else None self.sd = np.sort(sd) if sd is not None else None
self.moi = np.sort(moi) if moi is not None else None self.moi = np.sort(moi) if moi is not None else None

View File

@ -14,4 +14,4 @@ from .Output import Output
class Filter(Output, Input): class Filter(Output, Input):
"""Output should be first""" """Output should be first"""
def __init__(self, name='__CHILD__'): def __init__(self, name='__CHILD__'):
super().__init__('Filter:{}'.format(name)) super().__init__('F:{}'.format(name))

View File

@ -12,7 +12,7 @@ from .Node import Node
class Input(Node): class Input(Node):
def __init__(self, name='__CHILD__'): def __init__(self, name='__CHILD__'):
super().__init__('Input:{}'.format(name)) super().__init__('I:{}'.format(name))
self.outputs = list() self.outputs = list()
def register(self, output): def register(self, output):

View File

@ -8,10 +8,12 @@
# #
# TODO details # TODO details
import logging
class Node(object): class Node(object):
def __init__(self, name='A NODE HAS NO NAME'): def __init__(self, name='A NODE HAS NO NAME'):
self.name = name self.name = name
self.logger = logging.getLogger(name)
def __str__(self): def __str__(self):
return ("Node:{}".format(self.name)) return ("Node:{}".format(self.name))

View File

@ -14,7 +14,7 @@ from .Input import Input
class Output(Node): class Output(Node):
def __init__(self, name='__CHILD__'): def __init__(self, name='__CHILD__'):
super().__init__('Output:{}'.format(name)) super().__init__('O:{}'.format(name))
self.__dict__['input'] = None self.__dict__['input'] = None
def __setattr__(self, name, value): def __setattr__(self, name, value):

50
ld2dap/core/logger.py Normal file
View File

@ -0,0 +1,50 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# \file %filename%.py
# \brief TODO
# \author Florent Guiotte <florent.guiotte@gmail.com>
# \version 0.1
# \date 24 avril 2018
#
# from https://fangpenlin.com/posts/2012/08/26/good-logging-practice-in-python/
import os
import logging.config
from pathlib import Path
import yaml
def setup_logging(
default_path='logging.yaml',
default_level=logging.WARN,
env_key='LOG_CFG'
):
"""Setup logging configuration
"""
path = default_path
value = os.getenv(env_key, None)
if value:
path = value
if os.path.exists(path):
with open(path, 'rt') as f:
config = yaml.safe_load(f.read())
makedirs(config)
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
def makedirs(dic):
files = finddirs(dic)
for f in files:
d = Path(*f.parts[:-1])
d.mkdir(parents=True, exist_ok=True)
def finddirs(dic, key='filename'):
r = list()
value = dic.get(key)
if value : r.append(Path(value))
for k, v in dic.items():
if isinstance(v, dict):
r.extend(finddirs(v))
return r

40
logging.yaml Normal file
View File

@ -0,0 +1,40 @@
version: 1
disable_existing_loggers: False
formatters:
simple:
format: "%(asctime)s %(levelname)s %(name)s: %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: simple
filename: Logs/info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: simple
filename: Logs/errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
my_module:
level: DEBUG
handlers: [console]
propagate: no
root:
level: DEBUG
handlers: [console, info_file_handler, error_file_handler]

4
test.py Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/ipython
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# \file test.py # \file test.py
# \brief TODO # \brief TODO
@ -11,10 +11,12 @@
#from core import Input, Output, Filter #from core import Input, Output, Filter
from ld2dap import LoadTIFF, SaveFig, Treshold, ShowFig, Differential from ld2dap import LoadTIFF, SaveFig, Treshold, ShowFig, Differential
from ld2dap import AttributeProfiles as APs from ld2dap import AttributeProfiles as APs
from ld2dap.core import logger
import numpy as np import numpy as np
def main(): def main():
logger.setup_logging()
i = LoadTIFF(['Data/test.tiff', 'Data/test2.tiff']) i = LoadTIFF(['Data/test.tiff', 'Data/test2.tiff'])
t = Treshold(1e4) t = Treshold(1e4)
ap = APs([100,1e3,1e4]) ap = APs([100,1e3,1e4])