/** * Enables logging for given logger name and given severity. Everything logged to the object is * going to go to the returned CharSequence object which can be used to check the content or * converted <code>toString</code>. * * <p>The logging stops when the returned object is garbage collected. * * @param loggerName the name to capture logging for * @param level the level of details one wants to get * @return character sequence which can be check or converted to string * @since 1.27 */ public static CharSequence enable(String loggerName, Level level) { IL il = new IL(false); class MyPs extends PrintStream implements CharSequence { private ByteArrayOutputStream os; public MyPs() { this(new ByteArrayOutputStream()); } private MyPs(ByteArrayOutputStream arr) { super(arr); os = arr; } public int length() { return toString().length(); } public char charAt(int index) { return toString().charAt(index); } public CharSequence subSequence(int start, int end) { return toString().subSequence(start, end); } @Override public String toString() { return os.toString(); } } Logger l = Logger.getLogger(loggerName); if (l.getLevel() == null || l.getLevel().intValue() > level.intValue()) { l.setLevel(level); } MyPs ps = new MyPs(); Log log = new Log(l, ps); log.setLevel(level); l.addHandler(log); return ps; }