繁体   English   中英

记录器处理程序无法在不同的类中工作

[英]Logger handler wont work in different classes java

我是Java的新手,但我必须编写一个简单的记录器。 我的问题是我的记录器不会转移其处理程序。

我的第一堂课是:

public class LoggerClass {
    static final Logger logger = Logger.getLogger("myLogger");

    FileHandler fh;  
        public LoggerClass() {
        try {
            this.fh = new FileHandler("C:/Users/Administrator/Desktop/Logging%u.txt");
        } catch (IOException | SecurityException ex) {
            Logger.getLogger(LoggerClass.class.getName()).log(Level.SEVERE, null, ex);
        }
        logger.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();  
        fh.setFormatter(formatter); 

    }

}

我想通过这样做将记录器转移到另一个类:

package Logger;
import static Logger.LoggerClass.logger;
import java.io.IOException;
import java.util.logging.Level;

public class LoggingTest {

    public static void main(String[] args) throws IOException {

        try
    {
      ((Object) null).toString();
    }
    catch ( Exception e )
    {
      logger.log( Level.SEVERE, "oh oh", e );
    }

    logger.info( "Hat funktioniert" );
  }
    }

我尝试了几乎所有找到的内容以及logger功能,但它仅在控制台上提供其输出,而不是在文件中的显示方式

改变这个:

static final Logger logger = Logger.getLogger("myLogger");

public static final Logger logger = Logger.getLogger("myLogger");

您在定义Logger的类中为其提供了默认访问权限的原因,并且使用defail访问权限只能在包中访问它。 当您使用的是另一个软件包时,会出现错误。

上面的其他形式使用记录器,例如:

LoggerInterface.logger.info( "Hat funktioniert" );

由于您将其定义为静态,因此请使用classname.instance.method(parameter)

在测试中,您从未配置过记录器。 尝试这个:

    package Logger;
    import static Logger.LoggerClass.logger;
    import java.io.IOException;
    import java.util.logging.Level;

    //There are better ways to do this.
    static {
       new LoggerClass();
    }

    public class LoggingTest {



    public static void main(String[] args) throws IOException {

        try
    {
      ((Object) null).toString();
    }
    catch ( Exception e )
    {
      logger.log( Level.SEVERE, "oh oh", e );
    }

    logger.info( "Hat funktioniert" );
  }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM