/// <summary>Simple test case.</summary> public static void Main(string[] args) { if (args.Length > 0 && args[0].Equals("redwood")) { Redwood.Log(Redwood.Dbg, "at the top"); Redwood.StartTrack("Adaptor test controlled by redwood"); Logger topLogger = Logger.GetLogger(Logger.GlobalLoggerName); topLogger.Warning("I'm warning you!"); topLogger.Severe("Now I'm using my severe voice."); topLogger.Info("FYI"); Redwood.Log(Redwood.Dbg, "adapting"); JavaUtilLoggingAdaptor.Adapt(); topLogger.Warning("I'm warning you in Redwood!"); JavaUtilLoggingAdaptor.Adapt(); // should be safe to call this twice topLogger.Severe("Now I'm using my severe voice in Redwood!"); topLogger.Info("FYI: Redwood rocks"); // make sure original java.util.logging levels are respected topLogger.SetLevel(Level.Off); topLogger.Severe("We shouldn't see this message."); Redwood.Log(Redwood.Dbg, "at the bottom"); Redwood.EndTrack("Adaptor test controlled by redwood"); } else { // Reverse mapping Logger topLogger = Logger.GetLogger(Logger.GlobalLoggerName); // Can be Logger.getGlobal() in jdk1.7 // topLogger.addHandler(new ConsoleHandler()); Logger logger = Logger.GetLogger(typeof(JavaUtilLoggingAdaptor).FullName); topLogger.Info("Starting test"); logger.Log(Level.Info, "Hello from the class logger"); Redwood.Log("Hello from Redwood!"); Redwood.RootHandler().AddChild(RedirectOutputHandler.FromJavaUtilLogging(topLogger)); Redwood.Log("Hello from Redwood -> Java!"); Redwood.Log("Hello from Redwood -> Java again!"); logger.Log(Level.Info, "Hello again from the class logger"); Redwood.StartTrack("a track"); Redwood.Log("Inside a track"); logger.Log(Level.Info, "Hello a third time from the class logger"); Redwood.EndTrack("a track"); logger.Log(Level.Info, "Hello a fourth time from the class logger"); } }