mirror of
https://github.com/marcus-alicia/iRedAdmin-Pro-SQL.git
synced 2026-05-27 15:39:45 +00:00
Add files via upload
This commit is contained in:
83
libs/logger.py
Normal file
83
libs/logger.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import sys
|
||||
import logging
|
||||
import traceback
|
||||
from logging.handlers import SysLogHandler
|
||||
|
||||
import web
|
||||
from libs import iredutils
|
||||
import settings
|
||||
|
||||
session = web.config.get("_session")
|
||||
|
||||
# Set application name.
|
||||
logger = logging.getLogger("iredadmin")
|
||||
|
||||
# Set log level.
|
||||
_log_level = getattr(logging, str(settings.LOG_LEVEL).upper())
|
||||
logger.setLevel(_log_level)
|
||||
|
||||
if settings.LOG_TARGET == "stdout":
|
||||
_handler = logging.StreamHandler()
|
||||
_formatter = logging.Formatter("%(message)s (%(pathname)s, L%(lineno)d)")
|
||||
else:
|
||||
# Defaults to "syslog":
|
||||
_facility = getattr(SysLogHandler, "LOG_" + settings.SYSLOG_FACILITY.upper())
|
||||
_formatter = logging.Formatter("%(name)s %(message)s (%(pathname)s, L%(lineno)d)")
|
||||
|
||||
if settings.SYSLOG_SERVER.startswith("/"):
|
||||
# Log to a local socket
|
||||
_handler = SysLogHandler(address=settings.SYSLOG_SERVER, facility=_facility)
|
||||
else:
|
||||
# Log to a network address
|
||||
_server = (settings.SYSLOG_SERVER, settings.SYSLOG_PORT)
|
||||
_handler = SysLogHandler(address=_server, facility=_facility)
|
||||
|
||||
_handler.setFormatter(_formatter)
|
||||
logger.addHandler(_handler)
|
||||
|
||||
|
||||
def log_traceback():
|
||||
exc_type, exc_value, exc_traceback = sys.exc_info()
|
||||
msg = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
||||
logger.error(msg)
|
||||
|
||||
|
||||
def log_activity(msg, admin="", domain="", username="", event="", loglevel="info"):
|
||||
try:
|
||||
if not admin:
|
||||
admin = session.get("username")
|
||||
|
||||
if username and not domain:
|
||||
domain = username.split("@", 1)[-1]
|
||||
|
||||
msg = str(msg)
|
||||
|
||||
# Prepend '[API]' in log message
|
||||
try:
|
||||
if web.ctx.fullpath.startswith("/api/"):
|
||||
msg = "[API] " + msg
|
||||
except:
|
||||
pass
|
||||
|
||||
web.conn_iredadmin.insert(
|
||||
"log",
|
||||
admin=str(admin),
|
||||
domain=str(domain),
|
||||
username=str(username),
|
||||
loglevel=str(loglevel),
|
||||
event=str(event),
|
||||
msg=msg,
|
||||
ip=web.ctx.ip,
|
||||
timestamp=iredutils.get_gmttime(),
|
||||
)
|
||||
|
||||
if loglevel == "info":
|
||||
logger.info("{0} admin={1}, domain={2}, username={3}, event={4}, "
|
||||
"ip={5}".format(msg, admin, domain, username, event, web.ctx.ip))
|
||||
elif loglevel == "error":
|
||||
logger.error("{0} admin={1}, domain={2}, username={3}, event={4}, "
|
||||
"ip={5}".format(msg, admin, domain, username, event, web.ctx.ip))
|
||||
except:
|
||||
pass
|
||||
|
||||
return None
|
||||
Reference in New Issue
Block a user