示例#1
0
def update_sanic_log_level(log_file: Optional[Text] = None):
    """Set the log level of sanic loggers to the log level specified in the environment
    variable 'LOG_LEVEL_LIBRARIES'."""
    from sanic.log import logger, error_logger, access_logger

    log_level = os.environ.get(ENV_LOG_LEVEL_LIBRARIES,
                               DEFAULT_LOG_LEVEL_LIBRARIES)

    logger.setLevel(log_level)
    error_logger.setLevel(log_level)
    access_logger.setLevel(log_level)

    logger.propagate = False
    error_logger.propagate = False
    access_logger.propagate = False

    if log_file is not None:
        formatter = logging.Formatter(
            "%(asctime)s [%(levelname)-5.5s]  %(message)s")
        file_handler = logging.FileHandler(log_file)
        file_handler.setFormatter(formatter)

        logger.addHandler(file_handler)
        error_logger.addHandler(file_handler)
        access_logger.addHandler(file_handler)
示例#2
0
 def init_app(self, app: sanic.Sanic):
     self.client = raven.Client(dsn=app.config.get('SENTRY_DSN', None),
                                transport=raven_aiohttp.AioHttpTransport,
                                **app.config.get('SENTRY_PARAMS', {}))
     self.handler = SentryHandler(client=self.client,
                                  level=app.config.get(
                                      'SENTRY_LEVEL', logging.ERROR))
     logger.addHandler(self.handler)
     self.app = app
     self.app.sentry = self
示例#3
0
async def session_and_logger_init(app, loop):
    # session
    app.redis = await aioredis.create_redis_pool("redis://localhost")
    Session().init_app(app, interface=AIORedisSessionInterface(app.redis))
    app.oauth_client = aiohttp.ClientSession()
    # logger
    handler = RotatingFileHandler("sc2mafia.log",
                                  maxBytes=16 * 1024 * 1024,
                                  backupCount=64)
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter(
        fmt="%(asctime)s - (%(name)s)[%(levelname)s]: %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S")
    handler.setFormatter(formatter)
    logger.addHandler(handler)
示例#4
0
def update_sanic_log_level(
    log_file: Optional[Text] = None,
    use_syslog: Optional[bool] = False,
    syslog_address: Optional[Text] = None,
    syslog_port: Optional[int] = None,
    syslog_protocol: Optional[Text] = None,
) -> None:
    """Set the log level to 'LOG_LEVEL_LIBRARIES' environment variable ."""
    from sanic.log import logger, error_logger, access_logger

    log_level = os.environ.get(ENV_LOG_LEVEL_LIBRARIES,
                               DEFAULT_LOG_LEVEL_LIBRARIES)

    logger.setLevel(log_level)
    error_logger.setLevel(log_level)
    access_logger.setLevel(log_level)

    logger.propagate = False
    error_logger.propagate = False
    access_logger.propagate = False

    if log_file is not None:
        formatter = logging.Formatter(
            "%(asctime)s [%(levelname)-5.5s]  %(message)s")
        file_handler = logging.FileHandler(log_file)
        file_handler.setFormatter(formatter)

        logger.addHandler(file_handler)
        error_logger.addHandler(file_handler)
        access_logger.addHandler(file_handler)
    if use_syslog:
        formatter = logging.Formatter(
            "%(asctime)s [%(levelname)-5.5s] [%(process)d]"
            " %(message)s")
        socktype = SOCK_STREAM if syslog_protocol == TCP_PROTOCOL else SOCK_DGRAM
        syslog_handler = logging.handlers.SysLogHandler(
            address=(syslog_address, syslog_port),
            socktype=socktype,
        )
        syslog_handler.setFormatter(formatter)
        logger.addHandler(syslog_handler)
        error_logger.addHandler(syslog_handler)
        access_logger.addHandler(syslog_handler)
示例#5
0
def set_mail_log(app):
    SET_LOG_MAILHOST = app.config.get("SET_LOG_MAILHOST")
    SET_LOG_MAILPORT = app.config.get("SET_LOG_MAILPORT")
    SET_LOG_MAILSSL = app.config.get("SET_LOG_MAILSSL")
    SET_LOG_MAILUSERNAME = app.config.get("SET_LOG_MAILUSERNAME")
    SET_LOG_MAILPASSWORD = app.config.get("SET_LOG_MAILPASSWORD")
    SET_LOG_MAILFROMADDR = app.config.get("SET_LOG_MAILFROMADDR")
    SET_LOG_MAILTOADDRS = app.config.get("SET_LOG_MAILTOADDRS")
    SET_LOG_MAILSUBJECT = app.config.get("SET_LOG_MAILSUBJECT")
    if not SET_LOG_MAILHOST:
        raise AttributeError("必须指定邮件主机")
    if not SET_LOG_MAILFROMADDR:
        raise AttributeError("必须指定邮件发出邮箱")

    if not SET_LOG_MAILTOADDRS:
        raise AttributeError("必须指定邮件接收邮箱")
    if not SET_LOG_MAILSUBJECT:
        raise AttributeError("必须指定邮件主题")

    if SET_LOG_MAILPORT:
        SET_LOG_MAILHOST = (SET_LOG_MAILHOST, SET_LOG_MAILPORT)
    if SET_LOG_MAILSSL:
        SMTPHandler.emit = emit
    if SET_LOG_MAILUSERNAME:
        if SET_LOG_MAILPASSWORD:
            credentials = (SET_LOG_MAILUSERNAME, SET_LOG_MAILPASSWORD)
        else:
            credentials = (SET_LOG_MAILUSERNAME, )
        mail_handler = SMTPHandler(mailhost=SET_LOG_MAILHOST,
                                   fromaddr=SET_LOG_MAILFROMADDR,
                                   toaddrs=SET_LOG_MAILTOADDRS,
                                   credentials=credentials,
                                   subject=SET_LOG_MAILSUBJECT)
    else:
        mail_handler = SMTPHandler(mailhost=SET_LOG_MAILHOST,
                                   fromaddr=SET_LOG_MAILFROMADDR,
                                   toaddrs=SET_LOG_MAILTOADDRS,
                                   subject=SET_LOG_MAILSUBJECT)
    mail_handler.setLevel("ERROR")
    if not app.debug:
        logger.addHandler(mail_handler)
示例#6
0
async def init(app, loop):
    if not config.CUSTOM_JWT_SECRET:
        logger.info("Using random JWT secret.")
        app.config.JWT["jwtSecret"] = "".join(
            random.choice(string.digits + string.ascii_letters)
            for i in range(64))
    if config.LOGGING_SOCKET_ENABLED:
        sh = logging.handlers.SocketHandler(**config.LOGGING_SOCKET)
        logger.addHandler(sh)
        logger.info("Socket handler initialized.")
    try:
        # init aiohttp session
        app.aiohttp_session = aiohttp.ClientSession(loop=loop)
        await aiohttpSession.init({"limit": 200})
        # init SMTP client
        if config.DEBUG_ENABLE_SMTP or (not config.DEBUG):
            logger.info("Initializing SMTP...")
            await SMTP.init(config.SMTP_CLIENT_PARAMETERS,
                            config.SMTP_CREDENTIALS)
        # init mongo log
        if config.DEBUG_ENABLE_MONGO or (not config.DEBUG):
            logger.info("Initializing MongoDB...")
            await MongoDB.init(config.MONGODB_URI)
            app.mongo = SimpleNamespace()
            app.mongo.motor_client = AsyncIOMotorClient(config.MONGODB_URI)
            app.mongo.log_db = app.mongo.motor_client["yunnet"]
            app.mongo.log_collection = app.mongo.log_db["log"]
        # init aiomysql pool
        if config.DEBUG_ENABLE_SQL or (not config.DEBUG):
            logger.info("Initializing aiomysql...")
            await SQLPool.init_pool(**config.SQL_CREDENTIALS)
            SQLPool.debug = config.DEBUG_PRINT_SQL_ONLY
            # MAC updating task
            logger.info("Initializing Switch Updater")
            loop.create_task(switch_update(config.MAC_UPDATER_ENDPOINT))
    except Exception as ex:
        logger.critical(traceback.format_exc())
        raise ex
示例#7
0

#dlh=discordlogginghandler()
#rootlogger=logging.getLogger()
#rootlogger.addHandler(dlh)
dlh = discordlogginghandler()
#dlh.setFormatter(logging.Formatter('%(asctime)s - (%(name)s)[%(levelname)s][%(host)s]: %(request)s %(message)s %(status)d %(byte)d'))
#logging.getLogger('sanic.root').addHandler(dlh)
#logging.getLogger('sanic.error').addHandler(dlh)
#logging.getLogger('sanic.access').addHandler(dlh)
if saniclogger.handlers:
    for i in saniclogger.handlers:
        saniclogger.removeHandler(i)
dlh.setLevel(10)
saniclogger.setLevel(10)
saniclogger.addHandler(dlh)


def render_html(file_, **kwargs) -> str:
    template = jinja2env.get_template(file_)
    return res.html(template.render(**kwargs))


def replaceurl(s):
    url_list = re.findall(url_pattern, s)
    if not url_list:
        return s
    for i in url_list:
        s = s.replace(i, f'<a href="{i}">{i}</a>', 1)
    return s
示例#8
0
def _set_sanic_logger(log_path, webhook, maintainer):
    handler = _create_handler(log_path, JSONLogFormatter(webhook, maintainer))

    sanic_logger.addHandler(handler)