Java logger that automatically determines caller's class name

后端 未结 21 875
礼貌的吻别
礼貌的吻别 2020-12-07 17:53
public static Logger getLogger() {
    final Throwable t = new Throwable();
    final StackTraceElement methodCaller = t.getStackTrace()[1];
    final Logger logger          


        
21条回答
  •  没有蜡笔的小新
    2020-12-07 18:23

    Then the best thing is mix of two .

    public class LoggerUtil {
    
        public static Level level=Level.ALL;
    
        public static java.util.logging.Logger getLogger() {
            final Throwable t = new Throwable();
            final StackTraceElement methodCaller = t.getStackTrace()[1];
            final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(methodCaller.getClassName());
            logger.setLevel(level);
    
            return logger;
        }
    }
    

    And then in every class:

    private static final Logger LOG = LoggerUtil.getLogger();
    

    in code :

    LOG.fine("debug that !...");
    

    You get static logger that you can just copy&paste in every class and with no overhead ...

    Alaa

提交回复
热议问题