簡體   English   中英

如何在枚舉單例中實現日志記錄?

[英]How do I implement logging in an enum singleton?

我正在使用枚舉單例,但實現日志記錄很麻煩。 這個:

public enum Foo {
  INSTANCE;

  private final Logger log = Logger.getLogger(Foo.class.getName());

  ...
}

記錄器以我為普通Java類實例化記錄器的方式實例化,但當然我收到以下錯誤:

Foo.java: illegal reference to static field from initializer 

是否有相同的方式登錄枚舉單身?

在回答你的問題時,只需使記錄器保持靜態......

順便說一下,我認為它的標准做法是使用靜態記錄器,即使對象實例也是如此。 換句話說,記錄器在課堂上; 所有對象都使用靜態記錄器引用。

看到

http://logging.apache.org/log4j/1.2/manual.html

大多數使用記錄器的例子都有記錄器作為靜態屬性......

動態記錄:

Logger.getLogger(Foo.class.getName()).info("log info");

更短一點:使用方法:

private static Logger logger()
{
    if(logger == null)
    {
        logger = Logger.getLogger(AnEnum.class);
    }

    return logger;
}

/** Logger **/
private static Logger logger;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM