diff options
-rwxr-xr-x | asterisk.8.gz | bin | 2340 -> 2458 bytes | |||
-rwxr-xr-x | asterisk.c | 10 | ||||
-rwxr-xr-x | asterisk.sgml | 20 | ||||
-rwxr-xr-x | include/asterisk/options.h | 1 | ||||
-rwxr-xr-x | logger.c | 24 |
5 files changed, 49 insertions, 6 deletions
diff --git a/asterisk.8.gz b/asterisk.8.gz Binary files differindex 916f4d137..abbd0c453 100755 --- a/asterisk.8.gz +++ b/asterisk.8.gz diff --git a/asterisk.c b/asterisk.c index 2390f65dc..cb31376cf 100755 --- a/asterisk.c +++ b/asterisk.c @@ -81,6 +81,7 @@ int option_initcrypto=0; int option_nocolor; int option_dumpcore = 0; int option_cache_record_files = 0; +int option_timestamp = 0; int option_overrideconfig = 0; int option_reconnect = 0; int fully_booted = 0; @@ -1539,6 +1540,7 @@ static int show_cli_help(void) { printf(" -r Connect to Asterisk on this machine\n"); printf(" -R Connect to Asterisk, and attempt to reconnect if disconnected\n"); printf(" -t Record soundfiles in /var/tmp and move them where they belong after they are done.\n"); + printf(" -T Display the time in [Mmm dd hh:mm:ss] format for each line of output to the CLI.\n"); printf(" -v Increase verbosity (multiple v's = more verbose)\n"); printf(" -x <cmd> Execute command <cmd> (only valid with -r)\n"); printf("\n"); @@ -1611,6 +1613,9 @@ static void ast_readconfig(void) { /* verbose level (-v at startup) */ if (!strcasecmp(v->name, "verbose")) { option_verbose= atoi(v->value); + /* whether or not to force timestamping. (-T at startup) */ + } else if (!strcasecmp(v->name, "timestamp")) { + option_timestamp = ast_true(v->value); /* whether or not to support #exec in config files */ } else if (!strcasecmp(v->name, "execincludes")) { option_exec_includes = ast_true(v->value); @@ -1700,7 +1705,7 @@ int main(int argc, char *argv[]) } */ /* Check for options */ - while((c=getopt(argc, argv, "thfdvVqprRgcinx:U:G:C:")) != -1) { + while((c=getopt(argc, argv, "tThfdvVqprRgcinx:U:G:C:")) != -1) { switch(c) { case 'd': option_debug++; @@ -1738,6 +1743,9 @@ int main(int argc, char *argv[]) case 't': option_cache_record_files++; break; + case 'T': + option_timestamp++; + break; case 'x': option_exec++; xarg = optarg; diff --git a/asterisk.sgml b/asterisk.sgml index fb569d533..b84ad0020 100755 --- a/asterisk.sgml +++ b/asterisk.sgml @@ -21,7 +21,7 @@ <refsynopsisdiv> <cmdsynopsis> <command>asterisk</command> -<arg><option>-hfdvVqpRgcin</option></arg> +<arg><option>-tThfdvVqpRgcin</option></arg> <arg><option>-C </option><replaceable class="parameter">file</replaceable></arg> <arg><option>-U </option><replaceable class="parameter">user</replaceable></arg> <arg><option>-G </option><replaceable class="parameter">group</replaceable></arg> @@ -191,6 +191,24 @@ </listitem> </varlistentry> <varlistentry> + <term>-t</term> + <listitem> + <para> + When recording files, write them first into a temporary holding directory, + then move them into the final location when done. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>-T</term> + <listitem> + <para> + Add timestamp to all non-command related output going to the console + when running with verbose and/or logging to the console. + </para> + </listitem> + </varlistentry> + <varlistentry> <term>-U <replaceable class="parameter">user</replaceable></term> <listitem> <para> diff --git a/include/asterisk/options.h b/include/asterisk/options.h index 5cbdeab0f..2a3cf237c 100755 --- a/include/asterisk/options.h +++ b/include/asterisk/options.h @@ -31,6 +31,7 @@ extern int option_nocolor; extern int fully_booted; extern int option_exec_includes; extern int option_cache_record_files; +extern int option_timestamp; extern char defaultlanguage[]; extern time_t ast_startuptime; extern time_t ast_lastreloadtime; @@ -601,14 +601,14 @@ void ast_log(int level, const char *file, int line, const char *function, const if (level != __LOG_VERBOSE) { sprintf(linestr, "%d", line); - snprintf(buf, sizeof(buf), "%s %s[%ld]: %s:%s %s: ", + snprintf(buf, sizeof(buf), option_timestamp ? "[%s] %s[%ld]: %s:%s %s: " : "%s %s[%ld]: %s:%s %s: ", date, term_color(tmp1, levels[level], colors[level], 0, sizeof(tmp1)), (long)GETTID(), term_color(tmp2, file, COLOR_BRWHITE, 0, sizeof(tmp2)), term_color(tmp3, linestr, COLOR_BRWHITE, 0, sizeof(tmp3)), term_color(tmp4, function, COLOR_BRWHITE, 0, sizeof(tmp4))); - + ast_console_puts(buf); va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); @@ -616,7 +616,7 @@ void ast_log(int level, const char *file, int line, const char *function, const ast_console_puts(buf); } } else if ((chan->logmask & (1 << level)) && (chan->fileptr)) { - snprintf(buf, sizeof(buf), "%s %s[%ld]: ", date, + snprintf(buf, sizeof(buf), option_timestamp ? "[%s] %s[%ld]: " : "%s %s[%ld]: ", date, levels[level], (long)GETTID()); fprintf(chan->fileptr, buf); va_start(ap, fmt); @@ -657,13 +657,30 @@ extern void ast_verbose(const char *fmt, ...) static int replacelast = 0, complete; struct msglist *m; struct verb *v; + time_t t; + struct tm tm; + char date[40]; + char *datefmt; + va_list ap; va_start(ap, fmt); ast_mutex_lock(&msglist_lock); + time(&t); + localtime_r(&t, &tm); + strftime(date, sizeof(date), dateformat, &tm); + + if (option_timestamp) { + datefmt = alloca(strlen(date) + 3 + strlen(fmt) + 1); + if (datefmt) { + sprintf(datefmt, "[%s] %s", date, fmt); + fmt = datefmt; + } + } vsnprintf(stuff + pos, sizeof(stuff) - pos, fmt, ap); opos = pos; pos = strlen(stuff); + if (stuff[strlen(stuff)-1] == '\n') complete = 1; else @@ -703,7 +720,6 @@ extern void ast_verbose(const char *fmt, ...) } } /* else fprintf(stdout, stuff + opos); */ - ast_log(LOG_VERBOSE, "%s", stuff); if (strlen(stuff)) { if (stuff[strlen(stuff)-1] != '\n') |