Enable console logging for CLI tools
This commit enables CLI tools to have console logging. For the CLI tools, we skip configuring the logging infrastructure via the config file, and instead set the level only via a system property.
This commit is contained in:
parent
21dbc5ba84
commit
ac8c2e98ab
|
@ -227,7 +227,7 @@ final class Bootstrap {
|
|||
INSTANCE = new Bootstrap();
|
||||
|
||||
Environment environment = initialEnvironment(foreground, pidFile, esSettings);
|
||||
LogConfigurator.configure(environment);
|
||||
LogConfigurator.configure(environment, true);
|
||||
checkForCustomConfFile();
|
||||
|
||||
if (environment.pidFile() != null) {
|
||||
|
|
|
@ -63,26 +63,28 @@ public class LogConfigurator {
|
|||
public static void init() {
|
||||
}
|
||||
|
||||
public static void configure(final Environment environment) throws IOException {
|
||||
public static void configure(final Environment environment, final boolean resolveConfig) throws IOException {
|
||||
final Settings settings = environment.settings();
|
||||
|
||||
setLogConfigurationSystemProperty(environment, settings);
|
||||
|
||||
final LoggerContext context = (LoggerContext) LogManager.getContext(false);
|
||||
|
||||
final Set<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
|
||||
final List<AbstractConfiguration> configurations = new ArrayList<>();
|
||||
final PropertiesConfigurationFactory factory = new PropertiesConfigurationFactory();
|
||||
Files.walkFileTree(environment.configFile(), options, Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
|
||||
@Override
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
|
||||
if (file.getFileName().toString().equals("log4j2.properties")) {
|
||||
configurations.add((PropertiesConfiguration) factory.getConfiguration(file.toString(), file.toUri()));
|
||||
if (resolveConfig) {
|
||||
final Set<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
|
||||
final List<AbstractConfiguration> configurations = new ArrayList<>();
|
||||
final PropertiesConfigurationFactory factory = new PropertiesConfigurationFactory();
|
||||
Files.walkFileTree(environment.configFile(), options, Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
|
||||
@Override
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
|
||||
if (file.getFileName().toString().equals("log4j2.properties")) {
|
||||
configurations.add((PropertiesConfiguration) factory.getConfiguration(file.toString(), file.toUri()));
|
||||
}
|
||||
return FileVisitResult.CONTINUE;
|
||||
}
|
||||
return FileVisitResult.CONTINUE;
|
||||
}
|
||||
});
|
||||
context.start(new CompositeConfiguration(configurations));
|
||||
});
|
||||
context.start(new CompositeConfiguration(configurations));
|
||||
}
|
||||
|
||||
if (ESLoggerFactory.LOG_DEFAULT_LEVEL_SETTING.exists(settings)) {
|
||||
Loggers.setLevel(ESLoggerFactory.getRootLogger(), ESLoggerFactory.LOG_DEFAULT_LEVEL_SETTING.get(settings));
|
||||
|
@ -95,7 +97,7 @@ public class LogConfigurator {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressForbidden(reason = "sets system property for logging configuraton")
|
||||
@SuppressForbidden(reason = "sets system property for logging configuration")
|
||||
private static void setLogConfigurationSystemProperty(Environment environment, Settings settings) {
|
||||
System.setProperty("es.logs", environment.logsFile().resolve(ClusterName.CLUSTER_NAME_SETTING.get(settings).value()).toString());
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.index.translog;
|
|||
|
||||
import org.elasticsearch.cli.MultiCommand;
|
||||
import org.elasticsearch.cli.Terminal;
|
||||
import org.elasticsearch.common.logging.LogConfigurator;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
|
@ -30,7 +31,7 @@ import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
|||
*/
|
||||
public class TranslogToolCli extends MultiCommand {
|
||||
|
||||
public TranslogToolCli() {
|
||||
private TranslogToolCli() {
|
||||
super("A CLI tool for various Elasticsearch translog actions");
|
||||
subcommands.put("truncate", new TruncateTranslogCommand());
|
||||
}
|
||||
|
@ -43,11 +44,9 @@ public class TranslogToolCli extends MultiCommand {
|
|||
// same terminal.
|
||||
Environment loggingEnvironment = InternalSettingsPreparer.prepareEnvironment(Settings.builder()
|
||||
.put("path.home", pathHome)
|
||||
.put("appender.terminal.type", "terminal")
|
||||
.put("rootLogger", "${logger.level}, terminal")
|
||||
.put("logger.level", loggerLevel)
|
||||
.build(), Terminal.DEFAULT);
|
||||
// LogConfigurator.configure(loggingEnvironment.settings(), false);
|
||||
LogConfigurator.configure(loggingEnvironment, false);
|
||||
|
||||
exit(new TranslogToolCli().main(args, Terminal.DEFAULT));
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.plugins;
|
|||
|
||||
import org.elasticsearch.cli.MultiCommand;
|
||||
import org.elasticsearch.cli.Terminal;
|
||||
import org.elasticsearch.common.logging.LogConfigurator;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
|
@ -30,7 +31,7 @@ import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
|||
*/
|
||||
public class PluginCli extends MultiCommand {
|
||||
|
||||
public PluginCli() {
|
||||
private PluginCli() {
|
||||
super("A tool for managing installed elasticsearch plugins");
|
||||
subcommands.put("list", new ListPluginsCommand());
|
||||
subcommands.put("install", new InstallPluginCommand());
|
||||
|
@ -49,11 +50,9 @@ public class PluginCli extends MultiCommand {
|
|||
// Therefore we print to Terminal.
|
||||
Environment loggingEnvironment = InternalSettingsPreparer.prepareEnvironment(Settings.builder()
|
||||
.put("path.home", pathHome)
|
||||
.put("appender.terminal.type", "terminal")
|
||||
.put("rootLogger", "${logger.level}, terminal")
|
||||
.put("logger.level", loggerLevel)
|
||||
.build(), Terminal.DEFAULT);
|
||||
// LogConfigurator.configure(loggingEnvironment.settings(), false);
|
||||
LogConfigurator.configure(loggingEnvironment, false);
|
||||
|
||||
exit(new PluginCli().main(args, Terminal.DEFAULT));
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class EvilLoggerConfigurationTests extends ESTestCase {
|
|||
.put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString())
|
||||
.build();
|
||||
final Environment environment = new Environment(settings);
|
||||
LogConfigurator.configure(environment);
|
||||
LogConfigurator.configure(environment, true);
|
||||
|
||||
{
|
||||
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
|
||||
|
@ -87,7 +87,7 @@ public class EvilLoggerConfigurationTests extends ESTestCase {
|
|||
.put("logger.level", level)
|
||||
.build();
|
||||
final Environment environment = new Environment(settings);
|
||||
LogConfigurator.configure(environment);
|
||||
LogConfigurator.configure(environment, true);
|
||||
|
||||
final String loggerName;
|
||||
if (LogManager.getContext(false).hasLogger("org.elasticsearch.test", new PrefixMessageFactory())) {
|
||||
|
@ -109,7 +109,7 @@ public class EvilLoggerConfigurationTests extends ESTestCase {
|
|||
.put("logger.test_resolve_order", "TRACE")
|
||||
.build();
|
||||
final Environment environment = new Environment(settings);
|
||||
LogConfigurator.configure(environment);
|
||||
LogConfigurator.configure(environment, true);
|
||||
|
||||
// args should overwrite whatever is in the config
|
||||
final String loggerName;
|
||||
|
|
|
@ -52,7 +52,7 @@ public class EvilLoggerTests extends ESTestCase {
|
|||
.put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString())
|
||||
.build();
|
||||
final Environment environment = new Environment(settings);
|
||||
LogConfigurator.configure(environment);
|
||||
LogConfigurator.configure(environment, true);
|
||||
|
||||
testLogger = ESLoggerFactory.getLogger("test");
|
||||
deprecationLogger = ESLoggerFactory.getDeprecationLogger("test");
|
||||
|
|
Loading…
Reference in New Issue