You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.7 KiB
47 lines
1.7 KiB
'''
|
|
# Copyright (C) 2005-2024 Splunk Inc. All Rights Reserved.
|
|
'''
|
|
import logging
|
|
|
|
try:
|
|
from splunk.clilib.bundle_paths import make_splunkhome_path
|
|
except ImportError:
|
|
from splunk.appserver.mrsparkle.lib.util import make_splunkhome_path
|
|
|
|
DEFAULT_FORMAT = '%(asctime)s %(levelname)s pid=%(process)d tid=%(threadName)s file=%(filename)s:%(funcName)s:%(lineno)d | %(message)s'
|
|
SHORT_FORMAT = '%(asctime)s %(levelname)s %(message)s'
|
|
|
|
def setup_logger(name, level=logging.WARNING, maxBytes=25000000, backupCount=5,
|
|
format=DEFAULT_FORMAT):
|
|
'''
|
|
Set up a default logger.
|
|
|
|
@param name: The log file name.
|
|
@param level: The logging level.
|
|
@param maxBytes: The maximum log file size before rollover.
|
|
@param backupCount: The number of log files to retain.
|
|
'''
|
|
|
|
# Strip ".py" from the log file name if auto-generated by a script.
|
|
if '.py' in name:
|
|
name = name.replace(".py", "")
|
|
|
|
logfile = make_splunkhome_path(["var", "log", "splunk", name + '.log'])
|
|
|
|
# Set the level here, otherwise subsequent calls to getLogger seem to lose the level setting.
|
|
logging.basicConfig(level=level)
|
|
|
|
logger = logging.getLogger(name)
|
|
logger.propagate = False # Prevent the log messages from being duplicated in the python.log file
|
|
|
|
# Prevent re-adding handlers to the logger object, which can cause duplicate
|
|
# log lines.
|
|
handler_exists = any([True for h in logger.handlers if h.baseFilename == logfile])
|
|
if not handler_exists:
|
|
file_handler = logging.handlers.RotatingFileHandler(logfile, mode='a', maxBytes=maxBytes, backupCount=backupCount)
|
|
formatter = logging.Formatter(format)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|