Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从多个类访问Util.logger_Java_Logging_Java.util.logging - Fatal编程技术网

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); } 我正在尝

我不熟悉util.logging,所以对一些人来说这似乎是一个微不足道的问题,但不管怎样,我还是用Java的util.logger来记录消息。我试图在单个类中声明一个记录器,并从其他类访问它以记录消息

记录器类

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”)来使用它
我在问题中错误地公开了测试方法。它实际上是私有的,我已经相应地编辑了我的问题。那么你的答案也有效吗??