Previously, sheep had many log options, -l, -F , -d and -L. This patch merge options to the option '-l'.
Usage: $ sheep -l dir=<log_directory>,level=<log_level_num>,format=<log_format> Example: $ sheep -l dir=/logdir,level=7,format=server Signed-off-by: Teruaki Ishizaki <ishizaki.teru...@lab.ntt.co.jp> --- sheep/sheep.c | 106 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 58 insertions(+), 48 deletions(-) diff --git a/sheep/sheep.c b/sheep/sheep.c index a04fc86..1373c11 100644 --- a/sheep/sheep.c +++ b/sheep/sheep.c @@ -43,20 +43,6 @@ static const char journal_help[] = "\nExample:\n\t$ sheep -j dir=/journal,size=1G\n" "This tries to use /journal as the journal storage of the size 1G\n"; -static const char loglevel_help[] = -"Available log levels:\n" -" # Level Description\n" -" 0 SDOG_EMERG system has failed and is unusable\n" -" 1 SDOG_ALERT action must be taken immediately\n" -" 2 SDOG_CRIT critical conditions\n" -" 3 SDOG_ERR error conditions\n" -" 4 SDOG_WARNING warning conditions\n" -" 5 SDOG_NOTICE normal but significant conditions\n" -" 6 SDOG_INFO informational notices\n" -" 7 SDOG_DEBUG debugging messages\n" -"\nExample:\n\t$ sheep -l 4 ...\n" -"This only allows logs with level smaller than SDOG_WARNING to be logged\n"; - static const char http_help[] = "Available arguments:\n" "\thost=: specify a host to communicate with http server (default: localhost)\n" @@ -98,11 +84,30 @@ static const char cache_help[] = "This tries to use /my_ssd as the cache storage with 200G allocted to the\n" "cache in directio mode\n"; -static const char logdir_help[] = -"Example:\n\t$ sheep -L dir=/var/log/ ...\n" +static const char log_help[] = +"Example:\n\t$ sheep -l dir=/var/log/,level=0,format=server ...\n" "Available arguments:\n" "\tdir=: path to the location of sheep.log\n" -"if not specified use metastore directory\n"; +"\tlevel=: log level of sheep.log\n" +"\tformat=: log format type\n\n" +"if dir is not specified, use metastore directory\n\n" +"Available log levels:\n" +" # Level Description\n" +" 0 SDOG_EMERG system has failed and is unusable\n" +" 1 SDOG_ALERT action must be taken immediately\n" +" 2 SDOG_CRIT critical conditions\n" +" 3 SDOG_ERR error conditions\n" +" 4 SDOG_WARNING warning conditions\n" +" 5 SDOG_NOTICE normal but significant conditions\n" +" 6 SDOG_INFO informational notices\n" +" 7 SDOG_DEBUG debugging messages\n" +"default log level is SDOG_INFO\n\n" +"Available log format:\n" +" FormatType Description\n" +" default raw format\n" +" server raw format with timestamp\n" +" json json format\n" +"default log format is server\n"; static struct sd_option sheep_options[] = { {'b', "bindaddr", true, "specify IP address of interface to listen on", @@ -110,19 +115,16 @@ static struct sd_option sheep_options[] = { {'c', "cluster", true, "specify the cluster driver (default: "DEFAULT_CLUSTER_DRIVER")", cluster_help}, - {'d', "debug", false, "include debug messages in the log"}, {'D', "directio", false, "use direct IO for backend store"}, {'f', "foreground", false, "make the program run in the foreground"}, - {'F', "log-format", true, "specify log format"}, {'g', "gateway", false, "make the progam run as a gateway mode"}, {'h', "help", false, "display this help and exit"}, {'i', "ioaddr", true, "use separate network card to handle IO requests" " (default: disabled)", ioaddr_help}, {'j', "journal", true, "use jouranl file to log all the write " "operations. (default: disabled)", journal_help}, - {'l', "loglevel", true, "specify the level of logging detail " - "(default: 6 [SDOG_INFO])", loglevel_help}, - {'L', "logdir", true, "output directory of sheep.log", logdir_help}, + {'l', "log", true, "specify the log level, the log directory and the log format" + "(log level default: 6 [SDOG_INFO])", log_help}, {'n', "nosync", false, "drop O_SYNC for write of backend"}, {'o', "stdout", false, "log to stdout instead of shared logger"}, {'p', "port", true, "specify the TCP port on which to listen " @@ -309,16 +311,45 @@ static struct option_parser cache_parsers[] = { { NULL, NULL }, }; -static char ologpath[PATH_MAX]; +static int log_level = SDOG_INFO; + +static int log_level_parser(const char *s) +{ + char *p; + log_level = strtol(s, &p, 10); + if (s == p || log_level < SDOG_EMERG || + SDOG_DEBUG < log_level || *p != '\0') { + sd_err("Invalid log level '%s'", s); + sdlog_help(); + return -1; + } + return 0; +} + +static char *logdir = NULL; static int log_dir_parser(const char *s) { - snprintf(ologpath, sizeof(ologpath), "%s", s); + logdir = realpath(s, NULL); + if (!logdir) { + sd_err("%m"); + exit(1); + } + return 0; +} + +static const char *log_format = "server"; + +static int log_format_parser(const char *s) +{ + log_format = s; return 0; } static struct option_parser log_parsers[] = { + { "level=", log_level_parser }, { "dir=", log_dir_parser }, + { "format=", log_format_parser }, { NULL, NULL }, }; @@ -563,15 +594,15 @@ static void sighup_handler(int signum) int main(int argc, char **argv) { int ch, longindex, ret, port = SD_LISTEN_PORT, io_port = SD_LISTEN_PORT; - int log_level = SDOG_INFO, nr_vnodes = SD_DEFAULT_VNODES; + int nr_vnodes = SD_DEFAULT_VNODES; const char *dirp = DEFAULT_OBJECT_DIR, *short_options; char *dir, *p, *pid_file = NULL, *bindaddr = NULL, path[PATH_MAX], - *argp = NULL, *logdir = NULL; + *argp = NULL; bool is_daemon = true, to_stdout = false, explicit_addr = false; int64_t zone = -1; struct cluster_driver *cdrv; struct option *long_options; - const char *log_format = "server", *http_options = NULL; + const char *http_options = NULL; static struct logger_user_info sheep_info; install_crash_handler(crash_handler); @@ -602,22 +633,8 @@ int main(int argc, char **argv) is_daemon = false; break; case 'l': - log_level = strtol(optarg, &p, 10); - if (optarg == p || log_level < SDOG_EMERG || - SDOG_DEBUG < log_level || *p != '\0') { - sd_err("Invalid log level '%s'", optarg); - sdlog_help(); - exit(1); - } - break; - case 'L': if (option_parse(optarg, ",", log_parsers) < 0) exit(1); - logdir = realpath(ologpath, NULL); - if (!logdir) { - sd_err("%m"); - exit(1); - } break; case 'n': sys->nosync = true; @@ -629,10 +646,6 @@ int main(int argc, char **argv) } explicit_addr = true; break; - case 'd': - /* removed soon. use loglevel instead */ - log_level = SDOG_DEBUG; - break; case 'D': sys->backend_dio = true; break; @@ -721,9 +734,6 @@ int main(int argc, char **argv) PACKAGE_VERSION); exit(0); break; - case 'F': - log_format = optarg; - break; default: usage(1); break; -- 1.7.2.5 -- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog