syslog(LOG_USER | dout_prio_to_syslog_prio(prio), "%s",
obuf + TIME_FMT_SZ + 1);
}
- if (flags & DOUTSB_FLAG_STDERR) {
- if ((flags & DOUTSB_FLAG_STDERR_ALL) || (prio == -1)) {
- // Just write directly out to the stderr fileno. There's no point in
- // using something like fputs to write to a temporary buffer,
- // because we would just have to flush that temporary buffer
- // immediately.
- if (safe_write(STDERR_FILENO, obuf, len))
- flags &= ~DOUTSB_FLAG_STDERR;
- }
+ if ((prio == -1 && (flags & DOUTSB_FLAG_STDERR_ERR)) ||
+ (prio != -1 && (flags & DOUTSB_FLAG_STDERR_LOG))) {
+ // Just write directly out to the stderr fileno. There's no point in
+ // using something like fputs to write to a temporary buffer,
+ // because we would just have to flush that temporary buffer
+ // immediately.
+ if (safe_write(STDERR_FILENO, obuf, len))
+ flags &= ~DOUTSB_FLAG_STDERR;
}
if (flags & DOUTSB_FLAG_OFILE) {
if (safe_write(ofd, obuf, len))
{
static const char *KEYS[] =
{ "log_file", "log_sym_dir",
- "log_sym_history", "log_to_stderr",
+ "log_sym_history", "log_to_stderr", "err_to_stderr",
"log_to_syslog", "log_per_instance", NULL };
return KEYS;
}
flags |= DOUTSB_FLAG_SYSLOG;
}
- if ((conf->log_to_stderr != LOG_TO_STDERR_NONE) &&
- fd_is_open(STDERR_FILENO)) {
- switch (conf->log_to_stderr) {
- case LOG_TO_STDERR_SOME:
- flags |= DOUTSB_FLAG_STDERR_SOME;
- break;
- case LOG_TO_STDERR_ALL:
- flags |= DOUTSB_FLAG_STDERR_ALL;
- break;
- default:
- ostringstream oss;
- oss << "DoutStreambuf::handle_conf_change: can't understand "
- << "conf->log_to_stderr = " << conf->log_to_stderr << "\n";
- dout_emergency(oss.str());
- break;
- }
+ if (fd_is_open(STDERR_FILENO)) {
+ if (conf->log_to_stderr)
+ flags |= DOUTSB_FLAG_STDERR_LOG;
+ else
+ flags &= ~DOUTSB_FLAG_STDERR_LOG;
+
+ if (conf->err_to_stderr)
+ flags |= DOUTSB_FLAG_STDERR_ERR;
+ else
+ flags &= ~DOUTSB_FLAG_STDERR_ERR;
}
if (_read_ofile_config(conf) == 0) {
public:
enum dout_streambuf_flags_t {
DOUTSB_FLAG_SYSLOG = 0x01,
- DOUTSB_FLAG_STDERR_SOME = 0x04,
- DOUTSB_FLAG_STDERR_ALL = 0x08,
+ DOUTSB_FLAG_STDERR_LOG = 0x04,
+ DOUTSB_FLAG_STDERR_ERR = 0x08,
DOUTSB_FLAG_STDERR = 0x0c,
DOUTSB_FLAG_OFILE = 0x10,
};
conf->set_val_or_die("admin_socket", "/var/run/ceph/$name.asok");
conf->set_val_or_die("log_file", "/var/log/ceph/$name.log");
}
- conf->set_val_or_die("log_to_stderr", STRINGIFY(LOG_TO_STDERR_SOME));
+ conf->set_val_or_die("log_to_stderr", "false");
+ conf->set_val_or_die("err_to_stderr", "true");
break;
default:
conf->set_val_or_die("daemonize", "false");
set_val_or_die("pid_file", "");
set_val_or_die("log_sym_dir", "");
set_val_or_die("log_sym_history", "0");
- set_val_or_die("log_to_stderr", STRINGIFY(LOG_TO_STDERR_ALL));
+ set_val_or_die("log_to_stderr", "true");
+ set_val_or_die("err_to_stderr", "true");
set_val_or_die("log_to_syslog", "false");
set_val_or_die("log_per_instance", "false");
}
OPTION(log_file, OPT_STR, "")
OPTION(log_sym_dir, OPT_STR, "")
OPTION(log_sym_history, OPT_INT, 10)
-OPTION(log_to_stderr, OPT_INT, LOG_TO_STDERR_ALL)
+OPTION(log_to_stderr, OPT_BOOL, true)
+OPTION(err_to_stderr, OPT_BOOL, true)
OPTION(log_to_syslog, OPT_BOOL, false)
OPTION(log_per_instance, OPT_BOOL, false)
OPTION(clog_to_monitors, OPT_BOOL, true)
iparams.name.set(CEPH_ENTITY_TYPE_CLIENT, id);
}
CephContext *cct = common_preinit(iparams, CODE_ENVIRONMENT_LIBRARY, 0);
- cct->_conf->set_val("log_to_stderr", "1"); // quiet by default
+ cct->_conf->set_val("log_to_stderr", "false"); // quiet by default
+ cct->_conf->set_val("err_to_stderr", "true"); // quiet by default
cct->_conf->parse_env(); // environment variables override
cct->_conf->apply_changes(NULL);
}
// Can we change it?
- if (rados_conf_set(cl, "log to stderr", "2")) {
+ if (rados_conf_set(cl, "log to stderr", "true")) {
printf("error: error setting log_to_stderr\n");
return 1;
}
printf("error: failed to read log_to_stderr from config\n");
return 1;
}
- if (tmp[0] != '2') {
+ if (tmp == "true") {
printf("error: new setting for log_to_stderr failed to take effect.\n");
return 1;
}
printf("error: succeeded in setting nonexistent config option\n");
exit(1);
}
- if (rados.conf_set("log to stderr", "2")) {
+ if (rados.conf_set("log to stderr", "true")) {
printf("error: error setting log_to_stderr\n");
exit(1);
}
printf("error: failed to read log_to_stderr from config\n");
exit(1);
}
- if (tmp[0] != '2') {
+ if (tmp == "true") {
printf("error: new setting for log_to_stderr failed to take effect.\n");
exit(1);
}