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)
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
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)
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)
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)
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
#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
def _set_sanic_logger(log_path, webhook, maintainer): handler = _create_handler(log_path, JSONLogFormatter(webhook, maintainer)) sanic_logger.addHandler(handler)