Skip to content

Commit 9f8c30d

Browse files
Frédéric Mohiermohierf
Frédéric Mohier
authored andcommitted
Allow to set daemon log level with the command line
1 parent f01db44 commit 9f8c30d

File tree

6 files changed

+51
-15
lines changed

6 files changed

+51
-15
lines changed

alignak/daemon.py

+25-6
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,10 @@ def __init__(self, name, **kwargs):
659659
self.log_cherrypy = None
660660
self.log_filename = ''
661661

662+
# Log level...
663+
if 'log_level' in kwargs and kwargs['log_level']:
664+
self.log_level = PathProp().pythonize(kwargs['log_level'].strip())
665+
662666
# pid file is stored in the working directory
663667
self.pid = os.getpid()
664668
self.pid_filename = PathProp().pythonize("%s.pid" % self.name)
@@ -1751,12 +1755,21 @@ def get_header(self, configuration=False):
17511755
:return: A string list containing project name, daemon name, version, licence etc.
17521756
:rtype: list
17531757
"""
1754-
header = ["-----",
1755-
"Alignak %s - %s daemon" % (VERSION, self.name),
1756-
"Copyright (c) 2015-2018: Alignak Team",
1757-
"License: AGPL",
1758-
"-----",
1759-
"My pid: %s" % self.pid]
1758+
header = [u"-----",
1759+
u" █████╗ ██╗ ██╗ ██████╗ ███╗ ██╗ █████╗ ██╗ ██╗",
1760+
u" ██╔══██╗██║ ██║██╔════╝ ████╗ ██║██╔══██╗██║ ██╔╝",
1761+
u" ███████║██║ ██║██║ ███╗██╔██╗ ██║███████║█████╔╝ ",
1762+
u" ██╔══██║██║ ██║██║ ██║██║╚██╗██║██╔══██║██╔═██╗ ",
1763+
u" ██║ ██║███████╗██║╚██████╔╝██║ ╚████║██║ ██║██║ ██╗",
1764+
u" ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝",
1765+
u"-----",
1766+
u"Alignak %s - %s daemon" % (VERSION, self.name),
1767+
u"Copyright (c) 2015-2019: Alignak Team",
1768+
u"License: AGPL",
1769+
u"-----",
1770+
u"Python: %s" % sys.version,
1771+
u"-----",
1772+
u"My pid: %s" % self.pid]
17601773

17611774
if configuration:
17621775
header = ["My configuration: "]
@@ -2185,6 +2198,12 @@ def setup_alignak_logger(self):
21852198
logger.info("-----")
21862199
logger.info("Daemon log level set to a minimum of INFO")
21872200
logger.info("-----")
2201+
elif self.log_level:
2202+
# Force the global logger at provided level
2203+
set_log_level(self.log_level)
2204+
logger.info("-----")
2205+
logger.info("Daemon log level set to %s", self.log_level)
2206+
logger.info("-----")
21882207
except Exception as exp: # pylint: disable=broad-except
21892208
print("***** %s - exception when setting-up the logger: %s" % (self.name, exp))
21902209
self.exit_on_exception(exp, message="Logger configuration error!")

alignak/daemons/arbiterdaemon.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,8 @@ def daemons_start(self, run_daemons=True):
10131013
# Ignore myself ;)
10141014
continue
10151015

1016-
if satellite.alignak_launched and satellite.address not in ['127.0.0.1', 'localhost']:
1016+
if satellite.alignak_launched and \
1017+
satellite.address not in ['127.0.0.1', 'localhost']:
10171018
logger.error("Alignak is required to launch a daemon for %s %s "
10181019
"but the satelitte is defined on an external address: %s",
10191020
satellite.type, satellite.name, satellite.address)

alignak/scheduler.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ def check_freshness(self):
18751875
h.passive_checks_enabled and not h.active_checks_enabled]
18761876
statsmgr.gauge('freshness.hosts-count', len(hosts))
18771877
items.extend(hosts)
1878-
logger.debuginfo("Freshness check is enabled for %d hosts", len(hosts))
1878+
logger.debug("Freshness check is enabled for %d hosts", len(hosts))
18791879

18801880
hosts = [h for h in self.hosts if h.check_freshness and h.freshness_expired]
18811881
logger.debug("Freshness still expired for %d hosts", len(hosts))

alignak/util.py

+4
Original file line numberDiff line numberDiff line change
@@ -1330,6 +1330,10 @@ def parse_daemon_args(arbiter=False):
13301330
parser.add_argument('-l', '--log_file', dest='log_filename',
13311331
help='File used for the daemon log. Set as empty to disable log file.')
13321332

1333+
parser.add_argument('-Lm', '--log_level', dest='log_level',
1334+
help='Log level: DEBUG, INFO, WARNING, ERROR or CRITICAL. '
1335+
'Overrides the -v and -vv options.')
1336+
13331337
parser.add_argument('-i', '--pid_file', dest='pid_filename',
13341338
help='File used to store the daemon pid')
13351339

requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ docopt
5151
# Use psutil for daemons memory monitoring (env ALIGNAK_DAEMONS_MONITORING)
5252
# Use psutil for scheduler ALIGNAK_LOG_MONITORING
5353
# Use psutil for launching daemons from the Arbiter
54+
# Uncomment or `pip install psutil` to enable the concerned features
55+
# Note that psutil requires to be compiled: sudo apt-get install gcc python3-dev
5456
psutil>=5.4.3,<=5.4.5

tests/test_daemon_start.py

+17-7
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252

5353

5454
import os
55+
import sys
5556
import time
5657
import socket
5758
import tempfile
@@ -397,14 +398,23 @@ def test_daemon_header(self):
397398
"""
398399
daemon = self.get_daemon()
399400
expected_result = [
400-
"-----",
401-
"Alignak %s - %s daemon" % (VERSION, daemon.name),
402-
"Copyright (c) 2015-2018: Alignak Team",
403-
"License: AGPL",
404-
"-----",
405-
"My pid: %s" % daemon.pid
401+
u"-----",
402+
u" █████╗ ██╗ ██╗ ██████╗ ███╗ ██╗ █████╗ ██╗ ██╗",
403+
u" ██╔══██╗██║ ██║██╔════╝ ████╗ ██║██╔══██╗██║ ██╔╝",
404+
u" ███████║██║ ██║██║ ███╗██╔██╗ ██║███████║█████╔╝ ",
405+
u" ██╔══██║██║ ██║██║ ██║██║╚██╗██║██╔══██║██╔═██╗ ",
406+
u" ██║ ██║███████╗██║╚██████╔╝██║ ╚████║██║ ██║██║ ██╗",
407+
u" ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝",
408+
u"-----",
409+
u"Alignak %s - %s daemon" % (VERSION, daemon.name),
410+
u"Copyright (c) 2015-2019: Alignak Team",
411+
u"License: AGPL",
412+
u"-----",
413+
u"Python: %s" % sys.version,
414+
u"-----",
415+
u"My pid: %s" % daemon.pid
406416
]
407-
assert daemon.get_header()[:7] == expected_result
417+
assert daemon.get_header()[:14] == expected_result
408418

409419
def test_daemon_environment(self):
410420
""" Test daemon environment variables

0 commit comments

Comments
 (0)