aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xasterisk.8.gzbin2340 -> 2458 bytes
-rwxr-xr-xasterisk.c10
-rwxr-xr-xasterisk.sgml20
-rwxr-xr-xinclude/asterisk/options.h1
-rwxr-xr-xlogger.c24
5 files changed, 49 insertions, 6 deletions
diff --git a/asterisk.8.gz b/asterisk.8.gz
index 916f4d137..abbd0c453 100755
--- a/asterisk.8.gz
+++ b/asterisk.8.gz
Binary files differ
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;
diff --git a/logger.c b/logger.c
index 502a9719f..a8f7fe3fe 100755
--- a/logger.c
+++ b/logger.c
@@ -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')