Java 从多个类访问Util.logger
我不熟悉util.logging,所以对一些人来说这似乎是一个微不足道的问题,但不管怎样,我还是用Java的util.logger来记录消息。我试图在单个类中声明一个记录器,并从其他类访问它以记录消息 记录器类Java 从多个类访问Util.logger,java,logging,java.util.logging,Java,Logging,Java.util.logging,我不熟悉util.logging,所以对一些人来说这似乎是一个微不足道的问题,但不管怎样,我还是用Java的util.logger来记录消息。我试图在单个类中声明一个记录器,并从其他类访问它以记录消息 记录器类 package util; import java.util.logging.*; public class Logger { public Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); } 我正在尝
package util;
import java.util.logging.*;
public class Logger {
public Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
}
我正在尝试在其他类中访问此记录器,如下所示
package mycode;
import util.Logger;
public class MYcode{
private void test(){
LOGGER.fine("Sample message");
}
}
编译错误消息
error: cannot find symbol
[javac]LOGGER.fine("Sample message");
当我在Mycode类中声明logger时,我没有得到任何错误,但是当我在另一个类中声明logger时,我得到了一个错误。知道我哪里出错了吗???只要在需要记录器的所有类中继续使用同一行:
public Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
通过这种方式,您将创建对全局名称标识的记录器实例的多个引用。问题在于您的“记录器”不是静态的,因此您无法访问 记录器类:
package util;
import java.util.logging.*;
public class Logger {
public static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
}
package mycode;
import util.Logger;
public class MYcode{
public void test(){
LOGGER.fine("Sample message");
}
}
访问其他类中的记录器:
package util;
import java.util.logging.*;
public class Logger {
public static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
}
package mycode;
import util.Logger;
public class MYcode{
public void test(){
LOGGER.fine("Sample message");
}
}
LOGGER
在这里不是静态的,所以不能这样称呼它。如果是这样的话,您需要执行静态导入util.Logger.Logger
(import static…
)或者通过Logger.Logger
…转到Log4J…我只需要使用上面的一行来简化代码..知道怎么做吗?制作Logger
静态和final
,您可以通过调用Logger.Logger.fine(“msg”)来使用它
我在问题中错误地公开了测试方法。它实际上是私有的,我已经相应地编辑了我的问题。那么你的答案也有效吗??