Commit 43942937 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

logging improvement

parent 17b56f7a
Loading
Loading
Loading
Loading
+20 −28
Original line number Diff line number Diff line
@@ -44,40 +44,32 @@ def get_loglevel(level):
    return _LOG_LEVELS.get(level, logging.INFO)


def setup_logger_standard(level=DEFAULT_LOG_LEVEL, filename=None):
def setup_logger(level=DEFAULT_LOG_LEVEL, filename=None, detail=False):
    "setup logger"
    loglevel = get_loglevel(level)
    #
    log_format=r'%(message)s'
    if loglevel<logging.INFO or filename is not None:
        log_format=r'%(levelname)s: %(funcName)s: %(message)s'
    logging.basicConfig(filename=filename, level=loglevel, format=log_format)
    log = logging.getLogger()
    return log

def setup_logger_detail(level=DEFAULT_LOG_LEVEL, filename=None):
    "setup logger"
    loglevel = get_loglevel(level)

    log = logging.getLogger()
    log.setLevel(loglevel)

    #
    if detail:
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(loglevel)
    stream_formatter = logging.Formatter('%(message)s')
        stream_formatter = logging.Formatter('%(name)s | %(message)s')
        stream_handler.setFormatter(stream_formatter)
        log.addHandler(stream_handler)

        if filename:
            file_handler   = logging.FileHandler(filename=filename)
            file_formatter = logging.Formatter('%(asctime)s | %(name)s |  %(levelname)s: %(message)s')
            file_handler.setFormatter(file_formatter)
            file_handler.setLevel(loglevel)

    log.addHandler(stream_handler)
            log.addHandler(file_handler)

    else:
        log_format=r'%(message)s'
        if loglevel<logging.INFO or filename is not None:
            log_format=r'%(levelname)s: %(funcName)s: %(message)s'
        logging.basicConfig(filename=filename, level=loglevel, format=log_format)
    return log

setup_logger = setup_logger_standard

def dictionary_hash(arg):
    "compute object hash"

test/test_misc.py

0 → 100755
+55 −0
Original line number Diff line number Diff line
"""
Python unit test cases for misc module
"""

import unittest
import logging


import numpy as np

import pysen.misc as pmi


class MiscTestCase(unittest.TestCase):
    "Misc Test Cases"
    def setUp(self):
        log = logging.getLogger()
        for handler in list(log.handlers):
            log.removeHandler(handler)
            handler.close()
        log.setLevel(logging.NOTSET)
        log.propagate = True


    def tearDown(self):
        pass

    def test_getloglevel(self):
        "test getloglevel"

        self.assertEqual(logging.ERROR,   pmi.get_loglevel("ERROR"),   "ERROR")
        self.assertEqual(logging.WARNING, pmi.get_loglevel("WARNING"), "WARNING")
        self.assertEqual(logging.INFO,    pmi.get_loglevel("INFO"),    "INFO")
        self.assertEqual(logging.DEBUG,   pmi.get_loglevel("DEBUG"),   "DEBUG")
        self.assertEqual(logging.DEBUG,   pmi.get_loglevel("TRACE"),   "TRACE")

        self.assertEqual(logging.ERROR,   pmi.get_loglevel(pmi.ERROR),   "ERROR")
        self.assertEqual(logging.WARNING, pmi.get_loglevel(pmi.WARNING), "WARNING")
        self.assertEqual(logging.INFO,    pmi.get_loglevel(pmi.INFO),    "INFO")
        self.assertEqual(logging.DEBUG,   pmi.get_loglevel(pmi.DEBUG),   "DEBUG")
        self.assertEqual(logging.DEBUG,   pmi.get_loglevel(pmi.TRACE),   "TRACE")

    def test_setup_logger1(self):
        "test setup logger plain"
        log = pmi.setup_logger(level=pmi.DEBUG, filename='test.log')
        log.info('plain info test')

    def test_setup_logger2(self):
        "test setup logger plain"
        log = pmi.setup_logger(level=pmi.DEBUG, filename='test.log', detail=True)
        log.info('detail info test')


if __name__ == "__main__":
    unittest.main(exit=False, verbosity=2)