【问题标题】:Adding a final logger to a inner static class.. how to?将最终记录器添加到内部静态类..如何?
【发布时间】:2013-03-05 10:34:38
【问题描述】:

我有一个内部类,我想添加一个记录器,目前正在通过构造函数添加它。

我的外部类(spring bean)有以下内容:

private final Logger LOGGER = LoggerFactory.getLogger(getClass());

我的内部类有以下内容:

private final static class car {

    final Logger LOGGER;

    public car(Logger LOGGER) {
     this.LOGGER = LOGGER;
    }

}

我不喜欢上面的,还有其他方法可以解决这个问题吗?

【问题讨论】:

    标签: java spring logging


    【解决方案1】:

    你可以这样做:

    public class Foo
    {
        private final Logger logger = LoggerFactory.getLogger (getClass ());
    
        private static class Bar
        {
            private final Logger logger = Foo.this.logger;
        }
    }
    

    但更好的方法可能是:

    public class Foo
    {
        private final static Logger logger = LoggerFactory.getLogger (Foo.class);
    
        private static class Bar
        {
            private final static Logger logger = LoggerFactory.getLogger (Bar.class);
        }
    }
    

    【讨论】:

    • +1 表示遵循最佳标准。 @user1555190 你的记录器应该总是反映它记录的类。否则,您将从“Bar”类登录,但您的输出将显示“Foo”。
    【解决方案2】:
    private final static Logger LOGGER = LoggerFactory.getLogger(getClass());
    
    private final static class Car {
       void drive() {
           LOGGER.debug(msg);
       }
    }
    

    private final Logger LOGGER = LoggerFactory.getLogger(getClass());
    
        private final static class Car {
            private final Logger LOGGER = LoggerFactory.getLogger(Car.class);
    
            void drive() {
                LOGGER.debug(msg);
            }
        }
    

    【讨论】:

      【解决方案3】:

      如果您的意图是共享,您可以要求提供给外部班级的同一个记录器:

      private final Logger LOGGER = LoggerFactory.getLogger(OuterClass.class);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 1970-01-01
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多