Add logging to syslog and journald
This commit is contained in:
parent
470efd6f40
commit
41f97a73c9
@ -1,9 +1,12 @@
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from logging.handlers import RotatingFileHandler
|
from logging import Formatter
|
||||||
|
from logging.handlers import RotatingFileHandler, SysLogHandler
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
from freqtrade import OperationalException
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -36,8 +39,36 @@ def setup_logging(config: Dict[str, Any]) -> None:
|
|||||||
# Log to stdout, not stderr
|
# Log to stdout, not stderr
|
||||||
log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stdout)]
|
log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stdout)]
|
||||||
|
|
||||||
if config.get('logfile'):
|
logfile = config.get('logfile')
|
||||||
log_handlers.append(RotatingFileHandler(config['logfile'],
|
if logfile:
|
||||||
|
s = logfile.split(':')
|
||||||
|
if s[0] == 'syslog':
|
||||||
|
# Address can be either a string (socket filename) for Unix domain socket or
|
||||||
|
# a tuple (hostname, port) for UDP socket.
|
||||||
|
# Address can be omitted (i.e. simple 'syslog' used as the value of
|
||||||
|
# config['logfilename']), which defaults to '/dev/log', applicable for most
|
||||||
|
# of the systems.
|
||||||
|
address = (s[1], int(s[2])) if len(s) > 2 else s[1] if len(s) > 1 else '/dev/log'
|
||||||
|
handler = SysLogHandler(address=address)
|
||||||
|
# No datetime field for logging into syslog, to allow syslog
|
||||||
|
# to perform reduction of repeating messages if this is set in the
|
||||||
|
# syslog config. The messages should be equal for this.
|
||||||
|
handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s'))
|
||||||
|
log_handlers.append(handler)
|
||||||
|
elif s[0] == 'journald':
|
||||||
|
try:
|
||||||
|
from systemd.journal import JournaldLogHandler
|
||||||
|
except ImportError:
|
||||||
|
raise OperationalException("You need the systemd python package be installed in "
|
||||||
|
"order to use logging to journald.")
|
||||||
|
handler = JournaldLogHandler()
|
||||||
|
# No datetime field for logging into journald, to allow syslog
|
||||||
|
# to perform reduction of repeating messages if this is set in the
|
||||||
|
# syslog config. The messages should be equal for this.
|
||||||
|
handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s'))
|
||||||
|
log_handlers.append(handler)
|
||||||
|
else:
|
||||||
|
log_handlers.append(RotatingFileHandler(logfile,
|
||||||
maxBytes=1024 * 1024, # 1Mb
|
maxBytes=1024 * 1024, # 1Mb
|
||||||
backupCount=10))
|
backupCount=10))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user