Ejemplo n.º 1
0
def initLogger(slackUrl=None):
    """Return logger."""
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
    #
    stream = logging.StreamHandler()
    stream.setLevel(logging.INFO)
    stream.setFormatter(formatter)
    logger.addHandler(stream)
    #
    if slackUrl is not None and len(slackUrl) > 0:
        slack = SlackLogHandler(
            slackUrl,
            username='******',
            emojis={
                logging.INFO: ':grinning:',
                logging.WARNING: ':white_frowning_face:',
                logging.ERROR: ':persevere:',
                logging.CRITICAL: ':confounded:',
            })
        slack.setLevel(logging.INFO)
        slack.setFormatter(formatter)
        logger.addHandler(slack)
    return logger
Ejemplo n.º 2
0
def getSlackHandler(level, formatter):
    from slack_log_handler import SlackLogHandler
    if level is None:
        return None
    slackHandler = SlackLogHandler(SLACK_WEBHOOK_URL, username=SLACK_USERNAME)
    slackHandler.setLevel(level)
    slackHandler.setFormatter(formatter)
    return slackHandler
Ejemplo n.º 3
0
def get_module_logger(name=None):
    global loggers
    if 'loggers' not in globals():
        loggers = {}
    
    if name is None:
        name = __name__
    if loggers.get(name):
        return loggers.get(name)
    
    # logger の基本設定
    logger = getLogger(name)
    logger.setLevel(LOG_LEVEL_BASE)
    formatter = Formatter("%(asctime)s :%(filename)-10s %(lineno)-4d:%(levelname)-8s:%(funcName)-22s:%(message)s")
    
    # 標準出力 Handler
    sh = StreamHandler()
    logger.addHandler(sh)
    sh.setLevel(LOG_LEVEL_BASE)
    sh.setFormatter(formatter)
    
    # ファイル出力 Handler
    if LOG_FILE_DIR is not None:
        fh = FileHandler(LOG_FILE_DIR)
        fh.setLevel(LOG_LEVEL_FILE)
        logger.addHandler(fh)
        fh.setFormatter(formatter)
    
    # slack への通知
    if SLACK_WEBHOOK_URL is not None:
        slack = SlackLogHandler(
            SLACK_WEBHOOK_URL,
            username = HOSTNAME,
            emojis = {
                logging.INFO: ':cubimal_chick:',
                logging.WARNING: ':cloud:',
                logging.ERROR: ':japanese_goblin:',
                logging.CRITICAL: ':exploding_head:',
            }
        )
        slack.setLevel(LOG_LEVEL_SLACK)
        slack.setFormatter(formatter)
        logger.addHandler(slack)
    
    logger.propagate = False
    loggers[name] = logger
    
    ln = lambda nolevel: logging.getLevelName(nolevel)
#     logger.info(f'''
# 【 LOG CONFIG 】
#     - LOG_LEVEL_BASE: {ln(LOG_LEVEL_BASE)},
#     - LOG_FILE_DIR: {LOG_FILE_DIR},
#     - LOG_LEVEL_FILE: {ln(LOG_LEVEL_FILE)},
#     - SLACK_WEBHOOK_URL: {SLACK_WEBHOOK_URL},
#     - LOG_LEVEL_SLACK: {ln(LOG_LEVEL_SLACK)},
#     ''')
    return logger
Ejemplo n.º 4
0
def make_root_logger(console_loglevel: int = logging.DEBUG,
                     file_loglevel: int = STOP_LOG,
                     slack_loglevel: int = STOP_LOG,
                     log_file_path: str = None) -> logging.Logger:
    """Generate the root logger, including Slack log handler.

    Args:
        console_loglevel: the logging level of console handler.
        file_loglevel: the logging level of file log handler.
        slack_loglevel: the logging level of slack log handler.
        log_file_path: the path of log file.

    Returns:
        the root logger

    """
    root_logger = logging.getLogger()
    root_logger.setLevel(logging.DEBUG)

    formatter = logging.Formatter(
        fmt=
        "[%(levelname)s] %(asctime)s %(module)s::%(funcName)s, line %(lineno)d >> %(message)s"
    )

    if console_loglevel < STOP_LOG:
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)
        console_handler.setLevel(console_loglevel)
        root_logger.addHandler(console_handler)

    if log_file_path is not None and file_loglevel < STOP_LOG:
        file_handler = logging.FileHandler(log_file_path)
        file_handler.setFormatter(formatter)
        file_handler.setLevel(file_loglevel)
        root_logger.addHandler(file_handler)

    if slack_loglevel < STOP_LOG:
        env_val_name = "WEBHOOK_URL"
        try:
            webhook_url = os.environ[env_val_name]
        except KeyError as e:
            root_logger.error(
                "Environment variable \"{0}\" is not defined, so root logger cannot log to Slack."
                .format(env_val_name) +
                "Do \"export {0}=(WebHook URL)\" in the terminal or".format(
                    env_val_name) +
                "edit environment variables in Edit Configurations, PyCharm".
                format(env_val_name))
        else:
            slack_handler = SlackLogHandler(webhook_url)
            slack_handler.setFormatter(formatter)
            slack_handler.setLevel(slack_loglevel)
            root_logger.addHandler(slack_handler)

    return root_logger
Ejemplo n.º 5
0
def init_slack():
    if not os.path.exists(HOME + '/.slack_hook'):
        return
    wh = json.loads(open(HOME + '/.slack_hook').read())
    formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
    slack = SlackLogHandler(wh['webhook'],
                            username='******',
                            emojis={
                                logging.INFO: ':grinning:',
                                logging.WARNING: ':white_frowning_face:',
                                logging.ERROR: ':persevere:',
                                logging.CRITICAL: ':confounded:',
                            })
    slack.setLevel(logging.INFO)
    slack.setFormatter(formatter)
    logger.addHandler(slack)
Ejemplo n.º 6
0
def getMyLogger(ENV):
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter("%(asctime)s ["+ENV+"] %(message)s","%m/%d %H:%M:%S")

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    slack = SlackLogHandler(
        'https://hooks.slack.com/services/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',
        username = '******'
    )
    slack.setLevel(logging.INFO)
    slack.setFormatter(formatter)
    logger.addHandler(slack)
    return logger
Ejemplo n.º 7
0
def getMyLogger(ENV):
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter("%(asctime)s [" + ENV + "] %(message)s",
                                  "%m/%d %H:%M:%S")

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    slack = SlackLogHandler(
        'https://hooks.slack.com/services/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',
        username='******')
    slack.setLevel(logging.INFO)
    slack.setFormatter(formatter)
    logger.addHandler(slack)
    return logger
Ejemplo n.º 8
0
 def __init__(self, *args, **kwargs):
     super(SlackLog, self).__init__(*args, **kwargs)
     self._config = {
         'webhook_url': self.config.as_str('webhook_url', default=None),
         'username': self.config.as_str('username', default='bot')
     }
     slack_handler = SlackLogHandler(self._config['webhook_url'],
                                     username=self._config['username'],
                                     emojis={
                                         logging.INFO: ":white_circle:",
                                         logging.DEBUG: ":black_circle:",
                                         logging.ERROR: ":red_circle:"
                                     })
     logFormat = "%(asctime)s %(levelname)s %(message)s"
     formatter = logging.Formatter(fmt=logFormat)
     slack_handler.setFormatter(formatter)
     self.logger = logging.getLogger("slacklog")
     self.logger.setLevel(logging.DEBUG)
     self.logger.addHandler(slack_handler)
     self.logger.setLevel(logging.DEBUG)
Ejemplo n.º 9
0
#
# Slack Handler
#
slack = SlackLogHandler(os.getenv(
    'SLACK_WEB_HOOK',
    "https://hooks.slack.com/services/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"
),
                        username='******',
                        emojis={
                            logging.INFO: ':grinning:',
                            logging.WARNING: ':white_frowning_face:',
                            logging.ERROR: ':persevere:',
                            logging.CRITICAL: ':confounded:',
                        })
slack.setLevel(logging.INFO)
slack.setFormatter(formatter)

#
# logger に Handler を追加
#
logger.addHandler(stream)
logger.addHandler(slack)

if __name__ == '__main__':
    logger.info('Green 開始しました')
    # Pathの決定
    home = os.environ.get('ASP_HOME', '/home/asp')
    now = datetime.datetime.utcnow() + datetime.timedelta(hours=9)

    if os.path.isdir(home + '/db/{year:04d}'.format(year=now.year)) is False:
        os.makedirs(home + '/db/{year:04d}'.format(year=now.year))
Ejemplo n.º 10
0
logger.addHandler(dfile_handler)
# ファイル出力(error)
efile_handler = logging.FileHandler('collect/log/error.log', 'a')
efile_handler.setLevel(logging.ERROR)
efile_handler.setFormatter(format)
logger.addHandler(efile_handler)
# slack
slack_handler = SlackLogHandler(webhook_url=alert_url,
                                emojis={
                                    logging.INFO: ':grinning:',
                                    logging.WARNING: ':white_frowning_face:',
                                    logging.ERROR: ':persevere:',
                                    logging.CRITICAL: ':confounded:',
                                })
slack_handler.setLevel(logging.ERROR)
slack_handler.setFormatter(format)
logger.addHandler(slack_handler)


class SimpleListener(SubscribeListener):
    def __init__(self, conn):
        super().__init__()
        self.conn = conn

    def create_query(self):
        query = 'INSERT INTO crypto.candlestick (' \
                'pid, channel, timetoken, timestamp, ' \
                'open_1min, high_1min, low_1min, close_1min, volume_1min, timestamp_1min,' \
                'open_5min, high_5min, low_5min, close_5min, volume_5min, timestamp_5min,' \
                'open_15min, high_15min, low_15min, close_15min, volume_15min, timestamp_15min,' \
                'open_30min, high_30min, low_30min, close_30min, volume_30min, timestamp_30min,' \