summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2015-03-19 10:20:40 +0000
committerCorey Farrell <git@cfware.com>2015-03-19 10:20:40 +0000
commit4c84dca2d82f9a3461dae3cac8e596309770586f (patch)
treea8482226f4869821421a5d76c026ac908702a1cf
parent958bc84cafd43963f0a016f8979ec962c49af517 (diff)
logger: Apply default console logging when configuration cannot be loaded.
When logger.conf is missing or invalid enable console logging and display an error message. ASTERISK-24817 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/4497/ ........ Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/logger.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/main/logger.c b/main/logger.c
index c59c7ce6d..8ab75876c 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -367,7 +367,14 @@ static struct logchannel *make_logchannel(const char *channel, const char *compo
return chan;
}
-static void init_logger_chain(int locked, const char *altconf)
+/* \brief Read config, setup channels.
+ * \param locked The logchannels list is locked and this is a reload
+ * \param altconf Alternate configuration file to read.
+ *
+ * \retval 0 Success
+ * \retval -1 No config found or Failed
+ */
+static int init_logger_chain(int locked, const char *altconf)
{
struct logchannel *chan;
struct ast_config *cfg;
@@ -378,7 +385,7 @@ static void init_logger_chain(int locked, const char *altconf)
display_callids = 1;
if (!(cfg = ast_config_load2(S_OR(altconf, "logger.conf"), "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {
- return;
+ cfg = NULL;
}
/* delete our list of log channels */
@@ -399,16 +406,13 @@ static void init_logger_chain(int locked, const char *altconf)
/* If no config file, we're fine, set default options. */
if (!cfg) {
- if (errno) {
- fprintf(stderr, "Unable to open logger.conf: %s; default settings will be used.\n", strerror(errno));
- } else {
- fprintf(stderr, "Errors detected in logger.conf: see above; default settings will be used.\n");
- }
if (!(chan = ast_calloc(1, sizeof(*chan)))) {
- return;
+ fprintf(stderr, "Failed to initialize default logging\n");
+ return -1;
}
chan->type = LOGTYPE_CONSOLE;
chan->logmask = __LOG_WARNING | __LOG_NOTICE | __LOG_ERROR;
+
if (!locked) {
AST_RWLIST_WRLOCK(&logchannels);
}
@@ -417,7 +421,8 @@ static void init_logger_chain(int locked, const char *altconf)
if (!locked) {
AST_RWLIST_UNLOCK(&logchannels);
}
- return;
+
+ return -1;
}
if ((s = ast_variable_retrieve(cfg, "general", "appendhostname"))) {
@@ -498,6 +503,8 @@ static void init_logger_chain(int locked, const char *altconf)
}
ast_config_destroy(cfg);
+
+ return 0;
}
void ast_child_verbose(int level, const char *fmt, ...)
@@ -1409,6 +1416,7 @@ void logger_queue_start(void)
int init_logger(void)
{
+ int res;
/* auto rotate if sig SIGXFSZ comes a-knockin */
sigaction(SIGXFSZ, &handle_SIGXFSZ, NULL);
@@ -1434,9 +1442,12 @@ int init_logger(void)
ast_mkdir(ast_config_AST_LOG_DIR, 0777);
/* create log channels */
- init_logger_chain(0 /* locked */, NULL);
+ res = init_logger_chain(0 /* locked */, NULL);
ast_verb_update();
logger_initialized = 1;
+ if (res) {
+ ast_log(LOG_ERROR, "Errors detected in logger.conf. Default console logging is being used.\n");
+ }
return 0;
}