Skip to content

Commit

Permalink
vlog: add "vlog/list-pattern" command
Browse files Browse the repository at this point in the history
This patch allows to query logging format at the runtime for each destination
with "vlog/list-pattern" command.

Signed-off-by: Ansis Atteka <[email protected]>
Acked-by: Ben Pfaff <[email protected]>
  • Loading branch information
Ansis Atteka committed Jun 27, 2015
1 parent fe089c0 commit 532e146
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ v2.4.0 - xx xxx xxxx
See ovs-sim(1) for more information.
- Support to configure method (--syslog-method argument) that determines
how daemons will talk with syslog.
- Support for "ovs-appctl vlog/list-pattern" command that lets to query
logging message format for each destination.


v2.3.0 - 14 Aug 2014
Expand Down
1 change: 1 addition & 0 deletions include/openvswitch/vlog.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ void vlog_set_levels(struct vlog_module *,
char *vlog_set_levels_from_string(const char *) OVS_WARN_UNUSED_RESULT;
void vlog_set_levels_from_string_assert(const char *);
char *vlog_get_levels(void);
char *vlog_get_patterns(void);
bool vlog_is_enabled(const struct vlog_module *, enum vlog_level);
bool vlog_should_drop(const struct vlog_module *, enum vlog_level,
struct vlog_rate_limit *);
Expand Down
3 changes: 3 additions & 0 deletions lib/vlog-unixctl.man
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ Sets the log pattern for \fIdestination\fR to \fIpattern\fR. Refer to
.IP "\fBvlog/list\fR"
Lists the supported logging modules and their current levels.
.
.IP "\fBvlog/list-pattern\fR"
Lists logging patterns used for each destination.
.
.IP "\fBvlog/reopen\fR"
Causes \fB\*(PN\fR to close and reopen its log file. (This is useful
after rotating log files, to cause a new log file to be used.)
Expand Down
39 changes: 39 additions & 0 deletions lib/vlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,17 @@ vlog_unixctl_list(struct unixctl_conn *conn, int argc OVS_UNUSED,
free(msg);
}

static void
vlog_unixctl_list_pattern(struct unixctl_conn *conn, int argc OVS_UNUSED,
const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED)
{
char *msg;

msg = vlog_get_patterns();
unixctl_command_reply(conn, msg);
free(msg);
}

static void
vlog_unixctl_reopen(struct unixctl_conn *conn, int argc OVS_UNUSED,
const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED)
Expand Down Expand Up @@ -721,6 +732,8 @@ vlog_init(void)
1, INT_MAX, vlog_unixctl_set, NULL);
unixctl_command_register("vlog/list", "", 0, 0, vlog_unixctl_list,
NULL);
unixctl_command_register("vlog/list-pattern", "", 0, 0,
vlog_unixctl_list_pattern, NULL);
unixctl_command_register("vlog/enable-rate-limit", "[module]...",
0, INT_MAX, vlog_enable_rate_limit, NULL);
unixctl_command_register("vlog/disable-rate-limit", "[module]...",
Expand Down Expand Up @@ -785,6 +798,32 @@ vlog_get_levels(void)
return ds_cstr(&s);
}

/* Returns as a string current logging patterns for each destination.
* This string must be released by caller. */
char *
vlog_get_patterns(void)
{
struct ds ds = DS_EMPTY_INITIALIZER;
enum vlog_destination destination;

ovs_rwlock_rdlock(&pattern_rwlock);
ds_put_format(&ds, " prefix format\n");
ds_put_format(&ds, " ------ ------\n");

for (destination = 0; destination < VLF_N_DESTINATIONS; destination++) {
struct destination *f = &destinations[destination];;
const char *prefix = "none";

if (destination == VLF_SYSLOG && syslogger) {
prefix = syslog_get_prefix(syslogger);
}
ds_put_format(&ds, "%-7s %-32s %s\n", f->name, prefix, f->pattern);
}
ovs_rwlock_unlock(&pattern_rwlock);

return ds_cstr(&ds);
}

/* Returns true if a log message emitted for the given 'module' and 'level'
* would cause some log output, false if that module and level are completely
* disabled. */
Expand Down
3 changes: 3 additions & 0 deletions utilities/ovs-appctl.8.in
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,9 @@ and adjusting log levels.
.IP "\fBvlog/list\fR"
Lists the known logging modules and their current levels.
.
.IP "\fBvlog/list-pattern\fR"
Lists logging pattern used for each destination.
.
.IP "\fBvlog/set\fR [\fIspec\fR]"
Sets logging levels. Without any \fIspec\fR, sets the log level for
every module and destination to \fBdbg\fR. Otherwise, \fIspec\fR is a
Expand Down
1 change: 1 addition & 0 deletions utilities/ovs-appctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ Common commands:\n\
list-commands List commands supported by the target\n\
version Print version of the target\n\
vlog/list List current logging levels\n\
vlog/list-pattern List logging patterns for each destination.\n\
vlog/set [SPEC]\n\
Set log levels as detailed in SPEC, which may include:\n\
A valid module name (all modules, by default)\n\
Expand Down

0 comments on commit 532e146

Please sign in to comment.