aboutsummaryrefslogtreecommitdiff
blob: 4ea5cb13b29d355889bf2aae18400440aa252e37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#
#-*- coding:utf-8 -*-

"""
    Gentoo-Keys - Log.py

    Logging module, placeholder for our site-wide logging module

    @copyright: 2012 by Brian Dolbec <dol-sen> <dol-sen@users.sourceforge.net>
    @license: GNU GPL2, see COPYING for details.
"""

import logging
import time
import os

from gkeys.fileops import ensure_dirs


NAMESPACE = 'gentoo-keys'
logger = None
Console_handler = None
logname = None

log_levels = {
    'CRITICAL': logging.CRITICAL,
    'DEBUG': logging.DEBUG,
    'ERROR': logging.ERROR,
    'FATAL': logging.FATAL,
    'INFO': logging.INFO,
    'NOTSET': logging.NOTSET,
    'WARN': logging.WARN,
    'WARNING': logging.WARNING,
}


def set_logger(namespace=None, logpath='', level=None,
               dirmode=0o775, filemask=0o002):
    global logger, NAMESPACE, Console_handler, logname
    if not namespace:
        namespace = NAMESPACE
    else:
        NAMESPACE = namespace
    logger = logging.getLogger(namespace)
    logger.setLevel(log_levels['DEBUG'])
    # create formatter and add it to the handlers
    log_format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'
    formatter = logging.Formatter(log_format)
    # add the handlers to logger
    if logpath:
        ensure_dirs(logpath, mode=dirmode, fatal=True)
        os.umask(filemask)
        logname = os.path.join(logpath,
            '%s-%s.log' % (namespace, time.strftime('%Y%m%d-%H:%M')))
        file_handler = logging.FileHandler(logname)
        if level:
            file_handler.setLevel(log_levels[level])
        else:
            file_handler.setLevel(log_levels['DEBUG'])
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

    # create console handler with a higher log level
    Console_handler = logging.StreamHandler()
    Console_handler.setLevel(logging.ERROR)
    #Console_handler.setFormatter(formatter)
    logger.addHandler(Console_handler)
    #print "File logger suppose to be initialized", logger, Console_handler
    logger.debug("Loggers initialized")

    return logger


def save_logname():
    global logname, NAMESPACE
    _dir, name = os.path.split(logname)
    with open(os.path.join(_dir, '%s-lastlog' % NAMESPACE), 'w') as last:
        last.write(name)