int main(int argc, char* argv[])
{
bool runAsRoot = false;
-
try {
+#ifndef NDEBUG
+ const char *defaultLoggingBackend = "stderr";
+#else
+ const char *defaultLoggingBackend = "syslog";
+#endif
po::options_description desc("Allowed options");
desc.add_options()
("root,r", "Don't drop root privileges at startup")
("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"
+#ifdef HAVE_SYSTEMD
+ ",journal"
+#endif
+ "]")
("check,c", "check runtime environment and exit")
("version,v", "show application version")
;
}
Logger::setLogLevel(vm["log-level"].as<std::string>());
-#if !defined(NDEBUG)
- Logger::setLogBackend(new StderrBackend());
-#elif HAVE_SYSTEMD
- Logger::setLogBackend(new SystemdJournalBackend());
-#else
- Logger::setLogBackend(new SyslogBackend());
+ const std::string logBackend = vm["log-backend"].as<std::string>();
+ if(logBackend.compare("stderr") == 0) {
+ Logger::setLogBackend(new StderrBackend());
+ }
+#ifdef HAVE_SYSTEMD
+ else if(logBackend.compare("journal") == 0) {
+ Logger::setLogBackend(new SystemdJournalBackend());
+ }
#endif
+ else if(logBackend.compare("syslog") == 0) {
+ Logger::setLogBackend(new SyslogBackend());
+ }
+ else {
+ std::cerr << "Error: unrecognized logging backend option: " << logBackend << std::endl;
+ return 1;
+ }
runAsRoot = vm.count("root") > 0;
return 0;
}
-
int main(int argc, char* argv[])
{
try {
+#ifndef NDEBUG
+ const char *defaultLoggingBackend = "stderr";
+#else
+ const char *defaultLoggingBackend = "syslog";
+#endif
+
po::options_description desc("Allowed options");
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"
+#ifdef HAVE_SYSTEMD
+ ",journal"
+#endif
+ "]")
("version,v", "show application version")
;
}
Logger::setLogLevel(vm["log-level"].as<std::string>());
-#if !defined(NDEBUG)
- Logger::setLogBackend(new StderrBackend());
-#elif HAVE_SYSTEMD
- Logger::setLogBackend(new SystemdJournalBackend());
-#else
- Logger::setLogBackend(new SyslogBackend());
+ const std::string logBackend = vm["log-backend"].as<std::string>();
+ if(logBackend.compare("stderr") == 0) {
+ Logger::setLogBackend(new StderrBackend());
+ }
+#ifdef HAVE_SYSTEMD
+ else if(logBackend.compare("journal") == 0) {
+ Logger::setLogBackend(new SystemdJournalBackend());
+ }
#endif
+ else if(logBackend.compare("syslog") == 0) {
+ Logger::setLogBackend(new SyslogBackend());
+ }
+ else {
+ std::cerr << "Error: unrecognized logging backend option: " << logBackend << std::endl;
+ return 1;
+ }
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
return 0;
}
-