【问题标题】:How to create a FileHandler using a configuration file?如何使用配置文件创建 FileHandler?
【发布时间】:2014-10-05 00:05:21
【问题描述】:
  1. 在调用 LogManager.readConfiguration(InputStream) 后创建 Logger 时,我们是否必须创建 FileHandler 并将其添加到 Logger 中,还是 Logger 会使用下面的配置文件创建自己的 FileHandler?

  2. 当我在调用 LogManager.readConfiguration(InputStream) 后创建 FileHandler 时,它似乎没有使用配置文件中的属性(如下所示)。这是为什么呢?

  3. 有没有办法指示(在配置文件中)特定命名 Logger 将使用的特定 FileHandler 配置?前任。如果我正在创建一个名为“a.bb.ccc”的 Logger,并且我希望它使用具有一定限制和格式化程序的 FileHandler,但我希望默认 FileHandler 使用其他一些限制和格式化程序,我该怎么做?

    handlers = java.util.logging.FileHandler
    
    .level = ALL
    
    # Default
    java.util.logging.FileHandler.level = FINEST
    java.util.logging.FileHandler.formatter = package1.package2.package3.SimpleFormatter
    java.util.logging.FileHandler.limit = 10000
    java.util.logging.FileHandler.count = 7
    java.util.logging.FileHandler.append = true
    
    # package1.package2.class1
    package1.package2.class1.level = FINER
    

【问题讨论】:

    标签: java logging properties configuration


    【解决方案1】:
    1. 读取配置创建 FileHandler。您不必添加一个。
    2. 'package1.package2.package3.SimpleFormatter' 必须是公共的,对系统类加载器可见,具有公共的无参数构造函数,并且没有任何异常从构造函数中转义才能安装。
    3. 不支持使用属性语法,但您可以改用 LogManager 类级别文档中描述的config 选项。创建一个新类“package.SimpleFileConfig”并让默认构造函数按照您想要的方式设置所有内容。然后您的 logging.properties 将包含一行:config=package.SimpleFileConfig

    【讨论】:

    • 1.根据您所说的,它会自动创建一个。是因为“handlers = java.util.logging.FileHandler”吗? 2. 因为我没有使用默认格式化程序,所以它不起作用?为什么我不能使用我的自定义格式化程序? 3. 我认为属性文件会在运行时让事情变得更加灵活,但我想不会。
    • 1.正确的。 2. 只要你的类可以从系统类加载器访问,是公共的,并且有一个公共的无参数构造函数,就会工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2021-06-07
    • 2016-11-14
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多