如何在枚举单例中实现日志记录?

发布于 2024-10-04 11:10:06 字数 331 浏览 2 评论 0原文

我使用的是枚举单例,但实现日志记录很麻烦。这:

public enum Foo {
  INSTANCE;

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

  ...
}

记录器的实例化方式与我为普通 Java 类实例化记录器的方式相同,但我当然会收到以下错误:

Foo.java: illegal reference to static field from initializer 

是否有等效的方法来登录枚举单例?

I'm using an enum singleton, but implementing logging is troublesome. This:

public enum Foo {
  INSTANCE;

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

  ...
}

The logger is instantiated in the way that I would instantiate a logger for a normal Java class, but of course I get the following error:

Foo.java: illegal reference to static field from initializer 

Is there an equivalent way to log in enum singletons?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦萦几度 2024-10-11 11:10:06

为了回答你的问题,只需将记录器设置为静态...

顺便说一句,我认为即使对于对象实例也使用静态记录器是标准做法。换句话说,记录器在类上;所有对象都使用静态记录器引用。

请参阅

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

那里使用记录器的大多数示例都将记录器作为静态属性......

In answer to your question, just make the logger static...

BTW, I think its standard practice to use a static logger even for object instances. In other words, the logger is on the class; all objects use the static logger references.

See

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

Most of the examples of using a logger in there have the logger as a static property...

在梵高的星空下 2024-10-11 11:10:06

动态记录:

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

Log dynamically:

Logger.getLogger(Foo.class.getName()).info("log info");
情深如许 2024-10-11 11:10:06

更短一点:使用方法:logger().debug(...)

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

    return logger;
}

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

A bit shorter: use a method: logger().debug(...)

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

    return logger;
}

/** Logger **/
private static Logger logger;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文