当前位置: 首页 > 知识库问答 >
问题:

使用jdk日志/SLF4J更改日志级别本地化名称

缪朝
2023-03-14
package com.stackoverflow.tests.logging;

import java.util.Locale;
import java.util.logging.Logger;

public class TestLogging
{

    public static void doLog(Locale l)
    {
        Locale.setDefault(l);

        Logger logger = Logger.getLogger(TestLogging.class.getName());

        final String msg = "Hello logging world";
        logger.severe(msg);
        logger.info(msg);
        logger.config(msg);
        logger.fine(msg);
        logger.finer(msg);
        logger.finest(msg);

    }

    public static void main(String args[])
    {

        doLog(Locale.ITALY);

    //  doLog(Locale.UK);

    //  doLog(Locale.FRANCE);

    }
}
dic 15, 2014 10:48:43 AM com.stackoverflow.tests.logging.TestLogging doLog
Grave: Hello logging world
dic 15, 2014 10:48:43 AM com.stackoverflow.tests.logging.TestLogging doLog
Informazioni: Hello logging world

我怎么能那样做

  1. 直接使用JDK日志记录(我看到Logger.getLogger可以使用ResourceBundle,但我没有设法使其工作,而且我也不知道该文件中的内容)
  2. 使用SLF4 facade(我想这将意味着调整SLF4J的loggerFactory.getLogger函数,它是我用来获取记录器的函数)

共有1个答案

越学博
2023-03-14

根据一些测试,使用JDK日志记录似乎不可能做到这一点。

传递给记录器的资源包名称不会影响创建本地化名称的级别对象。相反,它使用默认的资源包(sun.util.logging.resources.logging)来获得该级别的文本版本。

我的测试包含一个名为logmessages.properties的文件,其中包含:

INFO="NEWINFO"
testmessage="fooballs"

和一个简单的类:

import java.util.logging.Logger;

public class LocaleLoggingTest {

  public static void main(String[] args) throws Exception {
    Logger logger = Logger.getLogger("name", "logmessages");
    logger.info("testmessage");
  }
}

输出:

Dec 15, 2014 10:23:39 AM LocaleLoggingTest main
INFO: "fooballs"

如果您进行调试,当您到达java.util.logging.simpleformatter.format(LogRecord)时,日志记录具有一个level对象,该对象具有默认的资源包。很沮丧,是吧?

 类似资料:
  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我目前正在尝试降低我在java项目中使用的PDFBox 1.8.6库的日志记录级别,但失败了。基于前面的问题,我在 /src/目录中有以下log4j.properties文件。 我不确定我还遗漏了什么,因为我仍然在控制台中收到类似以下消息的垃圾邮件。 如果有一种方法可以通过编程方式更改日志级别,那么我根本不会附加到属性文件,因为我在其他任何地方都不使用log4j。我不知道它是否使用log4j。属性

  • SLF4J具有以下日志级别 JDK日志记录具有以下日志级别 如果我想将日志级别设置为DEBUG,那么该级别在JDK日志中不可用。谁能解释一下在这种情况下我们如何获得调试级别的日志记录。对于这种情况,我们需要做什么额外的配置吗? 已更新 这是我的属性文件配置 请让我知道我哪里错了。

  • 我一直在尝试更改用户日志的日志级别,即出现在

  • 给定的第三方库的源代码我不能更改: 我想消除假阳性。 感谢您的反馈!

  • 我已经将ApacheJena库包含到我的Java项目中,并且我正在使用ApacheLog4J2作为我的记录器。我还包括了用于从log4jv1映射的log4j-1.2-api和log4j-slf4j-impl依赖项。x和SLF4J(分别) 但是,我无法更改Jena的日志记录级别 我尝试在log4j2中设置它。xml(我在项目中使用的内容): 我甚至尝试添加一个log4j。属性文件: 没有成功 是否有