/** * startLogger initializes and returns a file at logLoc with the results of logging at level * logLevel. * * @param logLoc location of the output log file- a string * @param logLevel logging level (is parsed by level.parse()) * @return Logger object to log to. */ public Logger startLogger(String logLoc, String logLevel) { try { fh = new FileHandler(logLoc); // sets output log file at logLoc } catch (SecurityException e) { e.printStackTrace(); System.err.println("SecurityException establishing logger. Exiting...\n"); System.exit(1); } catch (IOException e) { e.printStackTrace(); System.err.println("IOException establishing logger. Exiting...\n"); System.exit(1); } fh.setFormatter(new SimpleFormatter()); // format of log is 'human-readable' simpleformat logger.addHandler(fh); // attach formatter to logger logger.setLevel(Level.parse(logLevel)); // set log level return logger; }
protected Util(String[] args) { CommandLineParser cmdLineParse = new PosixParser(); Options options = new Options(); options.addOption("h", "help", false, "show this help message and exit"); options.addOption( OptionBuilder.withLongOpt("host") .withDescription("host to connect to (default 0.0.0.0)") .hasArg(true) .withArgName("HOST") .create('H')); options.addOption( OptionBuilder.withLongOpt("username") .withDescription("username to use for authentication") .hasArg(true) .withArgName("USERNAME") .create('u')); options.addOption( OptionBuilder.withLongOpt("password") .withDescription("password to use for authentication") .hasArg(true) .withArgName("PASSWORD") .create('w')); options.addOption( OptionBuilder.withLongOpt("port") .withDescription("port to connect to (default 5672)") .hasArg(true) .withArgName("PORT") .create('p')); options.addOption( OptionBuilder.withLongOpt("frame-size") .withDescription("specify the maximum frame size") .hasArg(true) .withArgName("FRAME_SIZE") .create('f')); options.addOption( OptionBuilder.withLongOpt("container-name") .withDescription("Container name") .hasArg(true) .withArgName("CONTAINER_NAME") .create('C')); options.addOption(OptionBuilder.withLongOpt("ssl").withDescription("Use SSL").create('S')); options.addOption( OptionBuilder.withLongOpt("remote-hostname") .withDescription("hostname to supply in the open frame") .hasArg(true) .withArgName("HOST") .create('O')); if (hasBlockOption()) options.addOption( OptionBuilder.withLongOpt("block") .withDescription("block until messages arrive") .create('b')); if (hasCountOption()) options.addOption( OptionBuilder.withLongOpt("count") .withDescription("number of messages to send (default 1)") .hasArg(true) .withArgName("COUNT") .create('c')); if (hasModeOption()) options.addOption( OptionBuilder.withLongOpt("acknowledge-mode") .withDescription( "acknowledgement mode: AMO|ALO|EO (At Least Once, At Most Once, Exactly Once") .hasArg(true) .withArgName("MODE") .create('k')); if (hasSubjectOption()) options.addOption( OptionBuilder.withLongOpt("subject") .withDescription("subject message property") .hasArg(true) .withArgName("SUBJECT") .create('s')); if (hasSingleLinkPerConnectionMode()) options.addOption( OptionBuilder.withLongOpt("single-link-per-connection") .withDescription( "acknowledgement mode: AMO|ALO|EO (At Least Once, At Most Once, Exactly Once") .hasArg(false) .create('Z')); if (hasFilterOption()) options.addOption( OptionBuilder.withLongOpt("filter") .withDescription("filter, e.g. exact-subject=hello; matching-subject=%.a.#") .hasArg(true) .withArgName("<TYPE>=<VALUE>") .create('F')); if (hasTxnOption()) { options.addOption("x", "txn", false, "use transactions"); options.addOption( OptionBuilder.withLongOpt("batch-size") .withDescription("transaction batch size (default: 1)") .hasArg(true) .withArgName("BATCH-SIZE") .create('B')); options.addOption( OptionBuilder.withLongOpt("rollback-ratio") .withDescription("rollback ratio - must be between 0 and 1 (default: 0)") .hasArg(true) .withArgName("RATIO") .create('R')); } if (hasLinkDurableOption()) { options.addOption("d", "durable-link", false, "use a durable link"); } if (hasStdInOption()) options.addOption("i", "stdin", false, "read messages from stdin (one message per line)"); options.addOption( OptionBuilder.withLongOpt("trace") .withDescription("trace logging specified categories: RAW, FRM") .hasArg(true) .withArgName("TRACE") .create('t')); if (hasSizeOption()) options.addOption( OptionBuilder.withLongOpt("message-size") .withDescription("size to pad outgoing messages to") .hasArg(true) .withArgName("SIZE") .create('z')); if (hasResponseQueueOption()) options.addOption( OptionBuilder.withLongOpt("response-queue") .withDescription("response queue to reply to") .hasArg(true) .withArgName("RESPONSE_QUEUE") .create('r')); if (hasLinkNameOption()) { options.addOption( OptionBuilder.withLongOpt("link") .withDescription("link name") .hasArg(true) .withArgName("LINK") .create('l')); } if (hasWindowSizeOption()) { options.addOption( OptionBuilder.withLongOpt("window-size") .withDescription("credit window size") .hasArg(true) .withArgName("WINDOW-SIZE") .create('W')); } CommandLine cmdLine = null; try { cmdLine = cmdLineParse.parse(options, args); } catch (ParseException e) { printUsage(options); System.exit(-1); } if (cmdLine.hasOption('h') || cmdLine.getArgList().isEmpty()) { printUsage(options); System.exit(0); } _host = cmdLine.getOptionValue('H', "0.0.0.0"); _remoteHost = cmdLine.getOptionValue('O', null); String portStr = cmdLine.getOptionValue('p', "5672"); String countStr = cmdLine.getOptionValue('c', "1"); _useSSL = cmdLine.hasOption('S'); if (hasWindowSizeOption()) { String windowSizeStr = cmdLine.getOptionValue('W', "100"); _windowSize = Integer.parseInt(windowSizeStr); } if (hasSubjectOption()) { _subject = cmdLine.getOptionValue('s'); } if (cmdLine.hasOption('u')) { _username = cmdLine.getOptionValue('u'); } if (cmdLine.hasOption('w')) { _password = cmdLine.getOptionValue('w'); } if (cmdLine.hasOption('F')) { _filter = cmdLine.getOptionValue('F'); } _port = Integer.parseInt(portStr); _containerName = cmdLine.getOptionValue('C'); if (hasBlockOption()) _block = cmdLine.hasOption('b'); if (hasLinkNameOption()) _linkName = cmdLine.getOptionValue('l'); if (hasLinkDurableOption()) _durableLink = cmdLine.hasOption('d'); if (hasCountOption()) _count = Integer.parseInt(countStr); if (hasStdInOption()) _useStdIn = cmdLine.hasOption('i'); if (hasSingleLinkPerConnectionMode()) _useMultipleConnections = cmdLine.hasOption('Z'); if (hasTxnOption()) { _useTran = cmdLine.hasOption('x'); _batchSize = Integer.parseInt(cmdLine.getOptionValue('B', "1")); _rollbackRatio = Double.parseDouble(cmdLine.getOptionValue('R', "0")); } if (hasModeOption()) { _mode = AcknowledgeMode.ALO; if (cmdLine.hasOption('k')) { _mode = AcknowledgeMode.valueOf(cmdLine.getOptionValue('k')); } } if (hasResponseQueueOption()) { _responseQueue = cmdLine.getOptionValue('r'); } _frameSize = Integer.parseInt(cmdLine.getOptionValue('f', "65536")); if (hasSizeOption()) { _messageSize = Integer.parseInt(cmdLine.getOptionValue('z', "-1")); } String categoriesList = cmdLine.getOptionValue('t'); String[] categories = categoriesList == null ? new String[0] : categoriesList.split("[, ]"); for (String cat : categories) { if (cat.equalsIgnoreCase("FRM")) { FRAME_LOGGER.setLevel(Level.FINE); Formatter formatter = new Formatter() { @Override public String format(final LogRecord record) { return "[" + record.getMillis() + " FRM]\t" + record.getMessage() + "\n"; } }; for (Handler handler : FRAME_LOGGER.getHandlers()) { FRAME_LOGGER.removeHandler(handler); } Handler handler = new ConsoleHandler(); handler.setLevel(Level.FINE); handler.setFormatter(formatter); FRAME_LOGGER.addHandler(handler); } else if (cat.equalsIgnoreCase("RAW")) { RAW_LOGGER.setLevel(Level.FINE); Formatter formatter = new Formatter() { @Override public String format(final LogRecord record) { return "[" + record.getMillis() + " RAW]\t" + record.getMessage() + "\n"; } }; for (Handler handler : RAW_LOGGER.getHandlers()) { RAW_LOGGER.removeHandler(handler); } Handler handler = new ConsoleHandler(); handler.setLevel(Level.FINE); handler.setFormatter(formatter); RAW_LOGGER.addHandler(handler); } } _args = cmdLine.getArgs(); }