Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/cl_plus/daemon/logsetup.py |
# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2020 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENCE.TXT
#
import os
import logging
from logging.handlers import SysLogHandler
_log_file_name = '/var/log/clplus_sender.log'
CONSOLE_LOG = None
SYS_LOG = None
FILE_LOG = None
def setup_logging(caller_name="clplus_sender", console_level=logging.ERROR, file_level=logging.INFO):
"""
Sets up logging
:param str caller_name:
:param console_level:
:param file_level:
:return logging.Logger: log, initialized
"""
logging.root.setLevel(logging.DEBUG)
init_console_log(console_level)
init_syslog()
init_file_log(file_level)
logger = logging.getLogger(caller_name)
logger.propagate = False
return logger
def init_syslog():
try:
global SYS_LOG
if SYS_LOG is None:
SYS_LOG = SysLogHandler(address='/dev/log', facility=SysLogHandler.LOG_DAEMON)
logging.root.addHandler(SYS_LOG)
formatter_sys = logging.Formatter(fmt='lve-stats: (%(name)s) [%(levelname)s] %(message)s')
SYS_LOG.setFormatter(formatter_sys) # write in system log only ERROR-s and FATALLERROR-s
SYS_LOG.setLevel(logging.ERROR)
except Exception:
pass
def init_file_log(file_level):
try:
global FILE_LOG
if FILE_LOG is None:
if not os.path.lexists(_log_file_name):
umask_saved = os.umask(0o77)
open(_log_file_name, 'w').close()
os.umask(umask_saved)
os.chmod(_log_file_name, 0o600)
FILE_LOG = logging.FileHandler(_log_file_name)
logging.root.addHandler(FILE_LOG)
formatter = logging.Formatter(fmt='%(asctime)s: (%(name)s) [%(levelname)s] %(message)s')
FILE_LOG.setFormatter(formatter)
FILE_LOG.setLevel(file_level)
except Exception:
pass
def init_console_log(console_level):
global CONSOLE_LOG
if CONSOLE_LOG is None:
CONSOLE_LOG = logging.StreamHandler()
logging.root.addHandler(CONSOLE_LOG)
formatter_console = logging.Formatter(fmt='%(levelname)s : (%(name)s) %(message)s')
CONSOLE_LOG.setFormatter(formatter_console)
CONSOLE_LOG.setLevel(console_level)