server: file logging added to logging backends 67/47567/4
authorMaciej J. Karpiuk <m.karpiuk2@samsung.com>
Fri, 4 Sep 2015 14:39:29 +0000 (16:39 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Mon, 7 Sep 2015 12:44:09 +0000 (05:44 -0700)
[Feature]       new logging backend support: file
[Cause]         N/A
[Solution]      one more option to logging-backend
[Verification]  try to log to file and user specified filename

Change-Id: Iae51c076c1b52439ff6388cf50b85dc14165a59e

server/main.cpp
zone-daemon/main.cpp

index af30cd2..81f908f 100644 (file)
@@ -64,7 +64,8 @@ int main(int argc, char* argv[])
 #else
         const char *defaultLoggingBackend = "syslog";
 #endif
-        po::options_description desc("Allowed options");
+        // 100 - wider terminal, nicer option descriptions
+        po::options_description desc("Allowed options", 100);
 
         desc.add_options()
         ("help,h", "print this help")
@@ -72,11 +73,13 @@ int main(int argc, char* argv[])
         ("daemon,d", "Run server as daemon")
         ("log-level,l", po::value<std::string>()->default_value("DEBUG"), "set log level")
         ("log-backend,b", po::value<std::string>()->default_value(defaultLoggingBackend),
-                          "set log backend [stderr,syslog"
+                          "set log backend [stderr,syslog,file"
 #ifdef HAVE_SYSTEMD
                           ",journal"
 #endif
                           "]")
+        ("log-file,f", po::value<std::string>()->default_value("vasum.log"),
+                          "set filename for file logging, optional")
         ("check,c", "check runtime environment and exit")
         ("version,v", "show application version")
         ;
@@ -127,6 +130,14 @@ int main(int argc, char* argv[])
         if(logBackend.compare("stderr") == 0) {
             Logger::setLogBackend(new StderrBackend());
         }
+        else if(logBackend.compare("file") == 0) {
+            const std::string logFilename = vm["log-file"].as<std::string>();
+            if(logFilename.empty()) {
+                std::cerr << "Error: invalid log file provided for file logging backend" << std::endl;
+                return 1;
+            }
+            Logger::setLogBackend(new FileBackend(logFilename));
+        }
 #ifdef HAVE_SYSTEMD
         else if(logBackend.compare("journal") == 0) {
             Logger::setLogBackend(new SystemdJournalBackend());
index 82b152e..4e59091 100644 (file)
@@ -61,18 +61,21 @@ int main(int argc, char* argv[])
         const char *defaultLoggingBackend = "syslog";
 #endif
 
-        po::options_description desc("Allowed options");
+        // 100 - wider terminal, nicer option descriptions
+        po::options_description desc("Allowed options", 100);
 
         desc.add_options()
         ("help,h", "print this help")
         ("daemon,d", "Run server as daemon")
         ("log-level,l", po::value<std::string>()->default_value("DEBUG"), "set log level")
         ("log-backend,b", po::value<std::string>()->default_value(defaultLoggingBackend),
-                          "set log backend [stderr,syslog"
+                          "set log backend [stderr,syslog,file"
 #ifdef HAVE_SYSTEMD
                           ",journal"
 #endif
                           "]")
+        ("log-file,f", po::value<std::string>()->default_value("zoned.log"),
+                          "set filename for file logging, optional")
         ("version,v", "show application version")
         ;
 
@@ -119,6 +122,14 @@ int main(int argc, char* argv[])
         if(logBackend.compare("stderr") == 0) {
             Logger::setLogBackend(new StderrBackend());
         }
+        else if(logBackend.compare("file") == 0) {
+            const std::string logFilename = vm["log-file"].as<std::string>();
+            if(logFilename.empty()) {
+                std::cerr << "Error: invalid log file provided for file logging backend" << std::endl;
+                return 1;
+            }
+            Logger::setLogBackend(new FileBackend(logFilename));
+        }
 #ifdef HAVE_SYSTEMD
         else if(logBackend.compare("journal") == 0) {
             Logger::setLogBackend(new SystemdJournalBackend());