属性的级别值不正确,无法为java.util.logging.FileHandler设置级别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了属性的级别值不正确,无法为java.util.logging.FileHandler设置级别相关的知识,希望对你有一定的参考价值。

这是学校的作业:我必须构建一个能够从我的项目中的任何地方进行日志记录的自定义记录器类。

除了java.util.logger,我不能使用任何其他东西。我正在使用位于项目中/ conf文件夹中的属性文件。

我收到此错误:

属性的错误级别值:java.util.logging.FileHandler.level

无法为java.util.logging.FileHandler设置级别

我认为这就是为什么我的debug()方法无法在我的文件中打印“ddd”以及为什么我不能用我设置的字符串格式化文件:“[%1 $ tc] - [%2 $ s] [% 4 $ s] [%5 $ s]%n“。

我无法弄清楚我在conf文件或代码中犯的错误:导入是正确的,我没有错误/警告代码。

我知道我永远不应该使用绝对路径,但我认为这不是我的问题,解决此问题后路径将被修复。

我的/ test文件夹中的try.log的输出:

03-Jan-2018 14:01:03 logger.classLogger警告

警告:请注意

请03-Jan-2018 14:01:03 logger.classLogger错误

严重:错误

03-Jan-2018 14:01:03 logger.classLogger info

信息:信息

这是我的.properties文件:

.level=ALL
handlers = java.util.logging.FileHandler 
java.util.logging.FileHandler.level = FINE 
java.util.logging.FileHandler.append = true 
java.util.logging.FileHandler.limit = 1000000 
java.util.logging.FileHandler.count = 100 
java.util.logging.FileHandler.pattern =  %t/Log%u%g.log
java.util.logging.SimpleFormatter.format = "[%1$tc] - [%2$s] [%4$s] [%5$s] %n"
java.util.logging.FileHandler.formatter =  java.util.logging.SimpleFormatter

这是我的班级:

  public class classLogger {

  Logger logger;
  FileHandler fh;
  SimpleFormatter sf;

  public classLogger(String classname){

    this.logger = Logger.getLogger(classname);
    logger.setLevel(Level.ALL);

    try {
      String path = "D:\myprojects\logger\conf\logging.properties";
      FileInputStream configFile = new FileInputStream(path); 
      LogManager.getLogManager().readConfiguration(configFile);
    }
    catch (IOException ex)
    {
    }

    try {
      String directory = "C:\Documents and Settings\E520user\Desktop\test"; 
      String filename = "\try.log";
      this.fh = new FileHandler(directory+filename);
    }
    catch (IOException ex1) {

    }

    this.sf = new SimpleFormatter();

    //set formatter
    fh.setFormatter(sf);

    //add handler
    logger.addHandler(fh);

  }

  public void error(String msg){
    logger.severe(msg);
  }

  public void warning(String msg){
    logger.warning(msg);
  }

  public void info(String msg){
    logger.info(msg);
  }

  public void debug(String msg){
    logger.fine(msg);
  }
  public static void main(String[] args) {

    IRSLogger log = new classLogger(classLogger.class.getName());
    log.warning("attention please");
    log.error("error");
    log.debug("dddd");
    log.info("info");

  }
}
答案

在我的Mac上尝试过,它运行正常

$ cat try.log 
"[Wed Jan 03 14:35:22 GMT 2018] - [classLogger warning] [WARNING] [attention please] 
""[Wed Jan 03 14:35:22 GMT 2018] - [classLogger error] [SEVERE] [error] 
""[Wed Jan 03 14:35:22 GMT 2018] - [classLogger debug] [FINE] [dddd] 
""[Wed Jan 03 14:35:22 GMT 2018] - [classLogger info] [INFO] [info] 

然而,我也得到这样的信息:Can't set level for java.util.logging.FileHandler

你可以尝试从属性文件中删除java.util.logging.FileHandler.level = FINE吗?

小费

你应该从这一行删除qazxsw poi:qazxsw poi

编辑:这适用于我的电脑

"

logging.properties

java.util.logging.SimpleFormatter.format = "[%1$tc] - [%2$s] [%4$s] [%5$s] %n"

它在import java.io.FileInputStream; import java.io.IOException; import java.util.logging.*; public class ClassLogger { private Logger logger; private FileHandler fh; public ClassLogger(String classname){ this.logger = Logger.getLogger(classname); try { String path = "/Users/myUser/Workspace/stackoverflow/test/src/main/java/logging.properties"; FileInputStream configFile = new FileInputStream(path); LogManager.getLogManager().readConfiguration(configFile); } catch (IOException ex) { ex.printStackTrace(); } try { String directory = "/Users/myUser/Workspace/stackoverflow/test/src/main/java/"; String filename = "try.log"; this.fh = new FileHandler(directory+filename); } catch (IOException ex1) { ex1.printStackTrace(); } //add handler logger.addHandler(fh); } public void error(String msg) { logger.severe(msg);} public void warning(String msg) { logger.warning(msg); } public void info(String msg) { logger.info(msg); } public void debug(String msg) { logger.fine(msg); } public static void main(String[] args) { ClassLogger log = new ClassLogger(ClassLogger.class.getName()); log.warning("attention please"); log.error("error"); log.debug("dddd"); log.info("info"); } } 输出

.level=ALL
handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.limit = 1000000
java.util.logging.FileHandler.count = 100
java.util.logging.FileHandler.pattern =  %t/Log%u%g.log
java.util.logging.SimpleFormatter.format = [%1$tc] - [%2$s] [%4$s] [%5$s] %n
java.util.logging.FileHandler.formatter =  java.util.logging.SimpleFormatter

以上是关于属性的级别值不正确,无法为java.util.logging.FileHandler设置级别的主要内容,如果未能解决你的问题,请参考以下文章

GATE ML 信息提取过程无法生成正确的类级别

为啥边界值不叫粗细?

SQL 降序值不正确

日期时间格式无效:1366 字符串值不正确

循环嵌套问题 - 值不正确

使用堆栈视图时帧值不正确