[master 2/6] logging, fix: setting remote logging from kicstart

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



First, go through the local rsyslogd to do the remote logging like the rest of
the system does. Second, give command line higher priority than kickstart.
---
 anaconda_log.py |   19 +++++++++++++++++++
 kickstart.py    |   25 +++++++++++++++++--------
 2 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/anaconda_log.py b/anaconda_log.py
index 31a8f74..d39ec47 100644
--- a/anaconda_log.py
+++ b/anaconda_log.py
@@ -22,6 +22,8 @@
 #            Michael Fulbright <msf@xxxxxxxxxx>
 #
 
+import os
+import signal
 import sys
 import logging
 from logging.handlers import SysLogHandler, SYSLOG_UDP_PORT
@@ -131,4 +133,21 @@ class AnacondaLog:
         syslogHandler.setLevel(logging.DEBUG)
         logger.addHandler(syslogHandler)
 
+    def updateRemote(self, remote_syslog):
+        """Updates the location of remote rsyslogd to forward to.
+
+        Requires updating rsyslogd config and sending SIGHUP to the daemon.
+        """
+        PIDFILE  = "/var/run/syslogd.pid"
+        CFGFILE  = "/etc/rsyslog.conf"
+        TEMPLATE = "*.* @@%s\n"
+
+        self.remote_syslog = remote_syslog
+        with open(CFGFILE, 'a') as cfgfile:
+            forward_line = TEMPLATE %(remote_syslog,)
+            cfgfile.write(forward_line)
+        with open(PIDFILE, 'r') as pidfile:
+            pid = int(pidfile.read())
+            os.kill(pid, signal.SIGHUP)
+
 logger = AnacondaLog()
diff --git a/kickstart.py b/kickstart.py
index 43e62cf..84434b8 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -56,7 +56,8 @@ _ = lambda x: gettext.ldgettext("anaconda", x)
 import logging
 log = logging.getLogger("anaconda")
 stdoutLog = logging.getLogger("anaconda.stdout")
-from anaconda_log import logger, logLevelMap, setHandlersLevel
+from anaconda_log import logger, logLevelMap, setHandlersLevel,\
+    DEFAULT_TTY_LEVEL
 
 class AnacondaKSScript(Script):
     def run(self, chroot, serial, intf = None):
@@ -513,13 +514,21 @@ class LogVolData(commands.logvol.F12_LogVolData):
 
 class Logging(commands.logging.FC6_Logging):
     def execute(self, anaconda):
-        setHandlersLevel(log, logLevelMap[self.level])
-
-        if self.host != "" and self.port != "":
-            logger.addSysLogHandler(log, self.host, port=int(self.port))
-        elif self.host != "":
-            logger.addSysLogHandler(log, self.host)
-
+        if logger.tty_loglevel == DEFAULT_TTY_LEVEL:
+            # not set from the command line
+            level = logLevelMap[self.level]
+            logger.tty_loglevel = level
+            storage_log = logging.getLogger("storage")
+            setHandlersLevel(log, level)
+            setHandlersLevel(storage_log, level)
+
+        if logger.remote_syslog == None and len(self.host) > 0:
+            # not set from the command line, ok to use kickstart
+            remote_server = self.host
+            if self.port:
+                remote_server = "%s:%s" %(self.host, self.port)
+            logger.updateRemote(remote_server)
+    
 class NetworkData(commands.network.F8_NetworkData):
     def execute(self, anaconda):
         if self.bootProto:
-- 
1.6.6

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux