summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-15 11:20:18 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-15 11:20:18 -0400
commitf2f5e9c8a8be6970c2683045ef9993ba60a0d63b (patch)
treecc4a3df003710ed839f35f24b2810fbbdfd03eff /src
parentd1073cc867ffc96952de4dddc5fb30d51fd5bf4e (diff)
downloadbcfg2-f2f5e9c8a8be6970c2683045ef9993ba60a0d63b.tar.gz
bcfg2-f2f5e9c8a8be6970c2683045ef9993ba60a0d63b.tar.bz2
bcfg2-f2f5e9c8a8be6970c2683045ef9993ba60a0d63b.zip
made logging to syslog configurable and default for all logging
Diffstat (limited to 'src')
-rw-r--r--src/lib/Bcfg2/Client/Frame.py15
-rw-r--r--src/lib/Bcfg2/Client/Tools/APK.py4
-rw-r--r--src/lib/Bcfg2/Client/Tools/Action.py2
-rw-r--r--src/lib/Bcfg2/Client/Tools/__init__.py8
-rw-r--r--src/lib/Bcfg2/Logger.py32
-rw-r--r--src/lib/Bcfg2/Options.py8
-rw-r--r--src/lib/Bcfg2/Server/Admin/Query.py3
-rw-r--r--src/lib/Bcfg2/Server/Core.py2
-rwxr-xr-xsrc/sbin/bcfg216
-rwxr-xr-xsrc/sbin/bcfg2-admin3
-rwxr-xr-xsrc/sbin/bcfg2-info2
-rwxr-xr-xsrc/sbin/bcfg2-lint2
-rwxr-xr-xsrc/sbin/bcfg2-test2
13 files changed, 53 insertions, 46 deletions
diff --git a/src/lib/Bcfg2/Client/Frame.py b/src/lib/Bcfg2/Client/Frame.py
index bfdc90d38..a050464e2 100644
--- a/src/lib/Bcfg2/Client/Frame.py
+++ b/src/lib/Bcfg2/Client/Frame.py
@@ -133,7 +133,6 @@ class Frame:
for entry in problems:
self.logger.error("%s:%s:%s" % (entry.tag, entry.get('type'),
entry.get('name')))
- self.logger.error("")
self.find_dups(config)
@@ -163,7 +162,6 @@ class Frame:
self.logger.debug("The following entries are included multiple times:")
for entry in multi:
self.logger.debug(entry)
- self.logger.debug("")
def __getattr__(self, name):
if name in ['extra', 'handled', 'modified', '__important__']:
@@ -371,7 +369,6 @@ class Frame:
if mbundles:
self.logger.info("The Following Bundles have been modified:")
self.logger.info([mbun.get('name') for mbun in mbundles])
- self.logger.info("")
tbm = [(t, b) for t in self.tools for b in mbundles]
for tool, bundle in tbm:
try:
@@ -414,10 +411,10 @@ class Frame:
def CondDisplayState(self, phase):
"""Conditionally print tracing information."""
- self.logger.info('\nPhase: %s' % phase)
- self.logger.info('Correct entries:\t%d' %
+ self.logger.info('Phase: %s' % phase)
+ self.logger.info('Correct entries: %d' %
list(self.states.values()).count(True))
- self.logger.info('Incorrect entries:\t%d' %
+ self.logger.info('Incorrect entries: %d' %
list(self.states.values()).count(False))
if phase == 'final' and list(self.states.values()).count(False):
for entry in self.states.keys():
@@ -429,9 +426,9 @@ class Frame:
else:
self.logger.info(" %s:%s" % (entry.tag,
entry.get('name')))
- self.logger.info('Total managed entries:\t%d' %
+ self.logger.info('Total managed entries: %d' %
len(list(self.states.values())))
- self.logger.info('Unmanaged entries:\t%d' % len(self.extra))
+ self.logger.info('Unmanaged entries: %d' % len(self.extra))
if phase == 'final' and self.setup['extra']:
for entry in self.extra:
etype = entry.get('type')
@@ -442,8 +439,6 @@ class Frame:
self.logger.info(" %s:%s" % (entry.tag,
entry.get('name')))
- self.logger.info("")
-
if ((list(self.states.values()).count(False) == 0) and not self.extra):
self.logger.info('All entries correct.')
diff --git a/src/lib/Bcfg2/Client/Tools/APK.py b/src/lib/Bcfg2/Client/Tools/APK.py
index aaaf2472f..d70916792 100644
--- a/src/lib/Bcfg2/Client/Tools/APK.py
+++ b/src/lib/Bcfg2/Client/Tools/APK.py
@@ -24,8 +24,8 @@ class APK(Bcfg2.Client.Tools.PkgTool):
for pkg in zip(names, nameversions):
pkgname = pkg[0]
version = pkg[1][len(pkgname) + 1:]
- self.logger.debug(" pkgname: %s\n version: %s" %
- (pkgname, version))
+ self.logger.debug(" pkgname: %s" % pkgname)
+ self.logger.debug(" version: %s" % version)
self.installed[pkgname] = version
def VerifyPackage(self, entry, modlist):
diff --git a/src/lib/Bcfg2/Client/Tools/Action.py b/src/lib/Bcfg2/Client/Tools/Action.py
index e13134e1f..52d4e6a3f 100644
--- a/src/lib/Bcfg2/Client/Tools/Action.py
+++ b/src/lib/Bcfg2/Client/Tools/Action.py
@@ -61,7 +61,7 @@ class Action(Bcfg2.Client.Tools.Tool):
else:
return rc == 0
else:
- self.logger.debug("In dryrun mode: not running action:\n %s" %
+ self.logger.debug("In dryrun mode: not running action: %s" %
(entry.get('name')))
return False
diff --git a/src/lib/Bcfg2/Client/Tools/__init__.py b/src/lib/Bcfg2/Client/Tools/__init__.py
index 1f191fce3..026c7ade0 100644
--- a/src/lib/Bcfg2/Client/Tools/__init__.py
+++ b/src/lib/Bcfg2/Client/Tools/__init__.py
@@ -209,10 +209,10 @@ class Tool(object):
missing = self.missing_attrs(entry)
if missing:
- self.logger.error("Incomplete information for entry %s:%s; cannot install" \
- % (entry.tag, entry.get('name')))
- self.logger.error("\t... due to absence of %s attribute" % \
- (":".join(missing)))
+ self.logger.error("Incomplete information for entry %s:%s; cannot "
+ "install due to absence of attribute(s): %s" %
+ (entry.tag, entry.get('name'),
+ ", ".join(missing)))
return False
return True
diff --git a/src/lib/Bcfg2/Logger.py b/src/lib/Bcfg2/Logger.py
index 903209ac3..26c1d52f6 100644
--- a/src/lib/Bcfg2/Logger.py
+++ b/src/lib/Bcfg2/Logger.py
@@ -126,20 +126,15 @@ class FragmentingSysLogHandler(logging.handlers.SysLogHandler):
"""
pass
-
-def add_console_handler(level):
+def add_console_handler(level=logging.DEBUG):
"""Add a logging handler that logs at a level to sys.stdout."""
console = logging.StreamHandler(sys.stdout)
- if level is True:
- console.setLevel(logging.DEBUG)
- else:
- console.setLevel(level)
+ console.setLevel(level)
# tell the handler to use this format
console.setFormatter(TermiosFormatter())
logging.root.addHandler(console)
-
-def add_syslog_handler(procname, syslog_facility):
+def add_syslog_handler(procname, syslog_facility, level=logging.DEBUG):
"""Add a logging handler that logs as procname to syslog_facility."""
try:
try:
@@ -150,7 +145,7 @@ def add_syslog_handler(procname, syslog_facility):
syslog = FragmentingSysLogHandler(procname,
('localhost', 514),
syslog_facility)
- syslog.setLevel(logging.DEBUG)
+ syslog.setLevel(level)
syslog.setFormatter(logging.Formatter('%(name)s[%(process)d]: %(message)s'))
logging.root.addHandler(syslog)
except socket.error:
@@ -158,15 +153,13 @@ def add_syslog_handler(procname, syslog_facility):
except:
print("Failed to activate syslogging")
-
-def add_file_handler(to_file):
+def add_file_handler(to_file, level=logging.DEBUG):
"""Add a logging handler that logs to to_file."""
filelog = logging.FileHandler(to_file)
- filelog.setLevel(logging.DEBUG)
+ filelog.setLevel(level)
filelog.setFormatter(logging.Formatter('%(asctime)s %(name)s[%(process)d]: %(message)s'))
logging.root.addHandler(filelog)
-
def setup_logging(procname, to_console=True, to_syslog=True,
syslog_facility='daemon', level=0, to_file=None):
"""Setup logging for Bcfg2 software."""
@@ -174,11 +167,16 @@ def setup_logging(procname, to_console=True, to_syslog=True,
return
if to_console:
- add_console_handler(to_console)
+ if to_console == True:
+ clvl = min(logging.WARNING, level)
+ else:
+ clvl = min(to_console, level)
+ add_console_handler(clvl)
if to_syslog:
- add_syslog_handler(procname, syslog_facility)
+ slvl = min(level, logging.INFO)
+ add_syslog_handler(procname, syslog_facility, level=slvl)
if to_file is not None:
- add_file_handler(to_file)
+ add_file_handler(to_file, level=level)
- logging.root.setLevel(level)
+ logging.root.setLevel(logging.DEBUG)
logging.already_setup = True
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py
index 320a219d3..4c6fb06d7 100644
--- a/src/lib/Bcfg2/Options.py
+++ b/src/lib/Bcfg2/Options.py
@@ -805,6 +805,11 @@ LOGGING_FILE_PATH = \
cmd='-o',
odesc='<path>',
cf=('logging', 'path'))
+LOGGING_SYSLOG = \
+ Option('Log to syslog',
+ default=True,
+ cook=get_bool,
+ cf=('logging', 'syslog'))
DEBUG = \
Option("Enable debugging output",
default=False,
@@ -871,7 +876,8 @@ CLI_COMMON_OPTIONS = dict(configfile=CFILE,
help=HELP,
verbose=VERBOSE,
encoding=ENCODING,
- logging=LOGGING_FILE_PATH)
+ logging=LOGGING_FILE_PATH,
+ syslog=LOGGING_SYSLOG)
DAEMON_COMMON_OPTIONS = dict(daemon=DAEMON,
listen_all=SERVER_LISTEN_ALL)
diff --git a/src/lib/Bcfg2/Server/Admin/Query.py b/src/lib/Bcfg2/Server/Admin/Query.py
index 6c4d3c4b6..f81ec41d2 100644
--- a/src/lib/Bcfg2/Server/Admin/Query.py
+++ b/src/lib/Bcfg2/Server/Admin/Query.py
@@ -22,7 +22,8 @@ class Query(Bcfg2.Server.Admin.MetadataCore):
def __init__(self, setup):
Bcfg2.Server.Admin.MetadataCore.__init__(self, setup)
logging.root.setLevel(100)
- Bcfg2.Logger.setup_logging(100, to_console=False, to_syslog=False)
+ Bcfg2.Logger.setup_logging(100, to_console=False,
+ to_syslog=setup['syslog'])
def __call__(self, args):
Bcfg2.Server.Admin.MetadataCore.__call__(self, args)
diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py
index 660d2c3ef..f25542eae 100644
--- a/src/lib/Bcfg2/Server/Core.py
+++ b/src/lib/Bcfg2/Server/Core.py
@@ -64,7 +64,7 @@ class BaseCore(object):
self.logger.setLevel(level)
Bcfg2.Logger.setup_logging('bcfg2-server',
to_console=True,
- to_syslog=True,
+ to_syslog=setup['syslog'],
to_file=setup['logging'],
level=level)
diff --git a/src/sbin/bcfg2 b/src/sbin/bcfg2
index 4c1514117..21de6a3fd 100755
--- a/src/sbin/bcfg2
+++ b/src/sbin/bcfg2
@@ -51,7 +51,7 @@ class Client:
if self.setup['debug']:
level = 0
Bcfg2.Logger.setup_logging('bcfg2',
- to_syslog=False,
+ to_syslog=self.setup['syslog'],
level=level,
to_file=self.setup['logging'])
self.logger = logging.getLogger('bcfg2')
@@ -97,11 +97,13 @@ class Client:
script.write(probe.text)
script.close()
os.close(scripthandle)
- os.chmod(script.name, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
- stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH |
- stat.S_IWUSR) # 0755
+ os.chmod(script.name,
+ stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
+ stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH |
+ stat.S_IWUSR) # 0755
ret.text = os.popen(script.name).read().strip()
- self.logger.info("Probe %s has result:\n%s" % (name, ret.text))
+ self.logger.info("Probe %s has result:" % name)
+ self.logger.info(ret.text)
finally:
os.unlink(script.name)
except:
@@ -121,6 +123,8 @@ class Client:
# begin configuration
times['start'] = time.time()
+ self.logger.info("Starting Bcfg2 client run at %s" % times['start'])
+
if self.setup['file']:
# read config from file
try:
@@ -314,6 +318,8 @@ class Client:
"%s" % err)
raise SystemExit(2)
+ self.logger.info("Finished Bcfg2 client run at %s" % time.time())
+
if __name__ == '__main__':
signal.signal(signal.SIGINT, cb_sigint_handler)
client = Client()
diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin
index 9b28d9bd5..8790cadee 100755
--- a/src/sbin/bcfg2-admin
+++ b/src/sbin/bcfg2-admin
@@ -50,7 +50,8 @@ def main():
level = logging.INFO
else:
level = logging.WARNING
- Bcfg2.Logger.setup_logging('bcfg2-admin', to_syslog=False, level=level)
+ Bcfg2.Logger.setup_logging('bcfg2-admin', to_syslog=setup['syslog'],
+ level=level)
# Provide help if requested or no args were specified
if (not setup['args'] or len(setup['args']) < 1 or
diff --git a/src/sbin/bcfg2-info b/src/sbin/bcfg2-info
index bba8eca7c..d8dd4a3c8 100755
--- a/src/sbin/bcfg2-info
+++ b/src/sbin/bcfg2-info
@@ -664,7 +664,6 @@ class infoCore(cmd.Cmd, Bcfg2.Server.Core.BaseCore):
self.do_loop()
if __name__ == '__main__':
- Bcfg2.Logger.setup_logging('bcfg2-info', to_syslog=False)
optinfo = dict(profile=Bcfg2.Options.CORE_PROFILE,
mconnect=Bcfg2.Options.SERVER_MCONNECT,
interactive=Bcfg2.Options.INTERACTIVE,
@@ -678,6 +677,7 @@ if __name__ == '__main__':
USAGE])
setup.parse(sys.argv[1:])
+ Bcfg2.Logger.setup_logging('bcfg2-info', to_syslog=setup['syslog'])
if setup['args'] and setup['args'][0] == 'help':
print(setup.hm)
sys.exit(0)
diff --git a/src/sbin/bcfg2-lint b/src/sbin/bcfg2-lint
index 8a5f55ae4..1038beca8 100755
--- a/src/sbin/bcfg2-lint
+++ b/src/sbin/bcfg2-lint
@@ -86,7 +86,7 @@ if __name__ == '__main__':
setup = Bcfg2.Options.OptionParser(optinfo)
setup.parse(sys.argv[1:])
- log_args = dict(to_syslog=False, to_console=logging.WARNING)
+ log_args = dict(to_syslog=setup['syslog'], to_console=logging.WARNING)
if setup['verbose']:
log_args['to_console'] = logging.DEBUG
Bcfg2.Logger.setup_logging('bcfg2-info', **log_args)
diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test
index 83d409944..8323eeb22 100755
--- a/src/sbin/bcfg2-test
+++ b/src/sbin/bcfg2-test
@@ -73,7 +73,7 @@ def main():
setup.parse(sys.argv[1:])
if setup['verbose']:
- Bcfg2.Logger.setup_logging("bcfg2-test", to_syslog=False)
+ Bcfg2.Logger.setup_logging("bcfg2-test", to_syslog=setup['syslog'])
core = Bcfg2.Server.Core.BaseCore(setup)