On Wed, 7 Apr 2010 12:41:36 +0900 FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp> wrote: > On Tue, 6 Apr 2010 14:12:11 +0900 > MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> wrote: > > > When running more than one collies in the same machine, it is > > confusing to send all the output to the syslog. > > > > You can specify the output file with -o option. > > > > $ collie -o /tmp/sdog /store > > (log messages are sent to /tmp/sdog) > > > > $ script/start-sheepdog -n=3 -o=/tmp/sdog- -d=/store > > (log messages are sent to /tmp/sdog-0, /tmp/sdog-1, and /tmp/sdog-2) > > > > Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> > > --- > > collie/collie.c | 14 ++++++++++++-- > > include/logger.h | 3 ++- > > lib/logger.c | 21 +++++++++++++++++---- > > script/start-sheepdog | 15 +++++++++++---- > > 4 files changed, 42 insertions(+), 11 deletions(-) > > > > diff --git a/collie/collie.c b/collie/collie.c > > index 8367487..0acc2d2 100644 > > --- a/collie/collie.c > > +++ b/collie/collie.c > > @@ -25,12 +25,13 @@ static struct option const long_options[] = { > > {"port", required_argument, 0, 'p'}, > > {"foreground", no_argument, 0, 'f'}, > > {"loglevel", required_argument, 0, 'l'}, > > + {"outfile", required_argument, 0, 'o'}, > > {"debug", no_argument, 0, 'd'}, > > {"help", no_argument, 0, 'h'}, > > {0, 0, 0, 0}, > > }; > > > > -static char *short_options = "p:fl:dh"; > > +static char *short_options = "p:fl:o:dh"; > > > > static void usage(int status) > > { > > @@ -44,6 +45,7 @@ Sheepdog Daemon, version %s\n\ > > -p, --port specify the listen port number\n\ > > -f, --foreground make the program run in the foreground\n\ > > -l, --loglevel specify the message level printed by default\n\ > > + -o, --outfile location for output (defaults to the system log)\n\ > > -d, --debug print debug messages\n\ > > -h, --help display this help and exit\n\ > > ", SD_VERSION); > > @@ -60,6 +62,7 @@ int main(int argc, char **argv) > > char *dir = DEFAULT_OBJECT_DIR; > > int is_daemon = 1; > > int log_level = LOG_INFO; > > + char *out_file = NULL; > > > > while ((ch = getopt_long(argc, argv, short_options, long_options, > > &longindex)) >= 0) { > > @@ -72,6 +75,12 @@ int main(int argc, char **argv) > > break; > > case 'l': > > log_level = atoi(optarg); > > + break; > > + case 'o': > > + out_file = optarg; > > + if (strcmp(out_file, "syslog") == 0) > > + out_file = NULL; > > I don't think we need this. There is no point to provide two different > ways to do the same thing. > > I also think that it's better to avoid syslog by default. > > anyway, here's a patch that addresses the above issues. Oops, this patch also addresses the problem that we don't write the time and date information to a log file. |