Log.xtend 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package be.uantwerpen.ansymo.semanticadaptation.log
  2. import org.apache.log4j.ConsoleAppender
  3. import org.apache.log4j.Level
  4. import org.apache.log4j.LogManager
  5. import org.apache.log4j.Logger
  6. import org.apache.log4j.PatternLayout
  7. class Log {
  8. var static Log l = null;
  9. var c = 0
  10. private static Logger logger;
  11. protected new() {
  12. LogManager.resetConfiguration();
  13. val console = new ConsoleAppender(); // create appender
  14. // configure the appender
  15. val PATTERN = "%d [%p] %m%n";
  16. console.setLayout(new PatternLayout(PATTERN));
  17. console.setThreshold(Level.DEBUG);
  18. console.activateOptions();
  19. // add appender to any Logger (here is root)
  20. Logger.getRootLogger().addAppender(console);
  21. logger = Logger.getLogger("L")
  22. logger.info("Logger initialized.")
  23. }
  24. def protected static Log gl() {
  25. if (l === null) {
  26. l = new Log();
  27. }
  28. return l;
  29. }
  30. def static String space(int indent){
  31. var res = ""
  32. for(var i = 0; i<indent; i++){
  33. res += " "
  34. }
  35. return res;
  36. }
  37. def static void println(String msg){
  38. val space = space(gl().c)
  39. for(line : msg.split('\n')){
  40. logger.info(space + line)
  41. }
  42. }
  43. def static void push(String msg){
  44. logger.info(space(gl().c) + ">" + msg)
  45. gl().c++
  46. }
  47. def static void pop(String msg){
  48. gl().c--
  49. logger.info(space(gl().c) + "<" + msg)
  50. }
  51. }