+
+ public final static String SIMPLE_PATTERN = "%level - %m%n";
+
+ private static boolean init = false;
+
+ public static boolean isInit()
+ {
+ return init;
+ }
+
+ public static Level log4jLevel(JLogger.LogLevel loglevel)
+ {
+ return Level.toLevel(loglevel.toString());
+ }
+
+ public static void init(JLogger.LogLevel myLevel)
+ {
+ init(log4jLevel(myLevel));
+ }
+
+ public static void init(Level myLevel)
+ {
+ if (init)
+ return;
+ try
+ {
+ // configure the root logger to stderr
+ ConfigurationBuilder<BuiltConfiguration> configBuilder = Log4j
+ .getConfigurationBuilder();
+
+ configBuilder.setStatusLevel(Level.WARN);
+
+ String consoleLoggerName = "STDERR";
+ AppenderComponentBuilder appenderBuilder = configBuilder
+ .newAppender(consoleLoggerName, "Console");
+ appenderBuilder.addAttribute("target",
+ ConsoleAppender.Target.SYSTEM_ERR);
+ appenderBuilder.add(Log4j.getSimpleLayoutBuilder());
+ appenderBuilder.add(Log4j.getThresholdFilterBuilder());
+ configBuilder.add(appenderBuilder);
+
+ configBuilder.add(configBuilder.newRootLogger(myLevel)
+ .add(configBuilder.newAppenderRef(consoleLoggerName)));
+
+ Configurator.initialize(configBuilder.build());
+
+ init = true;
+ } catch (Exception e)
+ {
+ System.err.println("Problems initializing the log4j system\n");
+ e.printStackTrace(System.err);
+ }
+ }
+
+ public static Logger getLogger(String name)
+ {
+ return getLogger(name, Level.INFO);
+ }
+
+ public static Logger getLogger(String name, JLogger.LogLevel loglevel)
+ {
+ return getLogger(name, log4jLevel(loglevel));
+ }
+
+ public static Logger getLogger(String name, Level level)
+ {
+ Logger logger = LogManager.getLogger(name);
+ Log4j.setLevel(logger, level);
+ return logger;
+ }
+
+ public static ConfigurationBuilder<BuiltConfiguration> getConfigurationBuilder()
+ {
+ return ConfigurationFactory.newConfigurationBuilder();
+ }
+
+ public static Layout getSimpleLayout()
+ {
+ return PatternLayout.newBuilder().withPattern(SIMPLE_PATTERN).build();
+ }
+
+ public static LayoutComponentBuilder getSimpleLayoutBuilder()
+ {
+ return getConfigurationBuilder().newLayout("PatternLayout")
+ .addAttribute("pattern", Log4j.SIMPLE_PATTERN);
+ }
+
+ public static Filter getThresholdFilter(Level level)
+ {
+ return ThresholdFilter.createFilter(level, Filter.Result.ACCEPT,
+ Filter.Result.NEUTRAL);
+ }
+
+ public static FilterComponentBuilder getThresholdFilterBuilder()
+ {
+ return getConfigurationBuilder().newFilter("ThresholdFilter",
+ Filter.Result.ACCEPT, Filter.Result.NEUTRAL);
+ }
+
+ public static void setLevel(Logger logger, JLogger.LogLevel loglevel)
+ {
+ setLevel(logger, log4jLevel(loglevel));
+ }
+