final ActionReport report = context.getActionReport();
String header_name = localStrings.getLocalString("list.loggers.header.name", "Logger Name");
String header_subsystem = localStrings.getLocalString("list.loggers.header.subsystem", "Subsystem");
String header_description = localStrings.getLocalString("list.loggers.header.description", "Logger Description");
ColumnFormatter colFormatter = new ColumnFormatter(new String[]{header_name, header_subsystem, header_description});
// An option to specify client locale should be supported. However, it probably
// should not be specific to this command. For now, localize using the default locale.
Locale locale = Locale.getDefault();
try {
Set<String> loggers = loggerInfoMetadataService.getLoggerNames();
// The following Map & List are used to hold the REST data
Map<String, String> loggerSubsystems = new HashMap<String, String>();
Map<String, String> loggerDescriptions = new HashMap<String, String>();
List<String> loggerList = new ArrayList<String>(loggers);
Collections.sort(loggerList);
for (String logger : loggers) {
String subsystem = loggerInfoMetadataService.getSubsystem(logger);
String desc = loggerInfoMetadataService.getDescription(logger, locale);
boolean published = loggerInfoMetadataService.isPublished(logger);
if (subsystem == null) subsystem = UNKNOWN;
if (desc == null) desc = UNKNOWN;
if (published || listInternalLoggers) {
colFormatter.addRow(new Object[]{logger, subsystem, desc});
loggerSubsystems.put(logger, subsystem);
loggerDescriptions.put(logger, desc); //Needed for REST xml and JSON output
loggerList.add(logger); //Needed for REST xml and JSON output
}
}
report.appendMessage(colFormatter.toString());
report.appendMessage(System.getProperty("line.separator"));
// Populate the extraProperties data structure for REST...
Properties restData = new Properties();
restData.put("loggerSubsystems", loggerSubsystems);