JDK:如何以编程方式启用 PlatformLogger

2024-07-01

我需要以编程方式启用某些 JDK7 内部类的日志记录。

这就是我在应用程序初始化时所做的事情:

httpLogger = Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
httpLogger.setLevel(Level.FINEST);

where httpLogger是一个强引用(以避免记录器被垃圾收集)。我还将 ConsoleHandler 的级别设置为 ALL。但是我无法得到任何输出。

如果我通过记录配置文件来执行此操作,它将按预期工作。

我可能是错的,但我认为这与我不理解有关PlatformLogger它是在 Java 7 中引入的,据我所知,它现在用于所有 JDK 内部日志记录。或者也许我只是不明白 J.U.L.足够好。

我猜如果我这样做的话它会起作用:

httpLogger = PlatformLogger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
httpLogger.setLevel(Level.FINEST);

but PlatformLogger类位于我无法引用的包中。

What is PlatformLogger ?

这是 JavaDoc:

Platform logger provides an API for the JRE components to log
messages.  This enables the runtime components to eliminate the
static dependency of the logging facility and also defers the
java.util.logging initialization until it is enabled.
In addition, the PlatformLogger API can be used if the logging
module does not exist.

If the logging facility is not enabled, the platform loggers
will output log messages per the default logging configuration
(see below). In this implementation, it does not log the
the stack frame information issuing the log message.

When the logging facility is enabled (at startup or runtime),
the java.util.logging.Logger will be created for each platform
logger and all log messages will be forwarded to the Logger
to handle.

Logging facility is "enabled" when one of the following
conditions is met:
1) a system property "java.util.logging.config.class" or
    "java.util.logging.config.file" is set
2) java.util.logging.LogManager or java.util.logging.Logger
    is referenced that will trigger the logging initialization.

Default logging configuration:
  global logging level = INFO
  handlers = java.util.logging.ConsoleHandler
  java.util.logging.ConsoleHandler.level = INFO
  java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Limitation:
<JAVA_HOME>/lib/logging.properties is the system-wide logging
configuration defined in the specification and read in the
default case to configure any java.util.logging.Logger instances.
Platform loggers will not detect if <JAVA_HOME>/lib/logging.properties
is modified. In other words, unless the java.util.logging API
is used at runtime or the logging system properties is set,
the platform loggers will use the default setting described above.
The platform loggers are designed for JDK developers use and
this limitation can be workaround with setting
-Djava.util.logging.config.file system property.

@since 1.7

我的解决方案出现在一个小型自定义小部件演示程序的开头:

// Log all focus messages.
final Logger rootLogger = Logger.getLogger("");
rootLogger.setLevel(Level.ALL);
final ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
// Because there are a lot of focus messages, make them
// a little easier to read by logging only the message.
consoleHandler.setFormatter(new Formatter() {
    @Override
    public String format(LogRecord record) {
        return "FOCUS: " + record.getMessage() + '\n';
    }
});
final Logger logger = Logger.getLogger("java.awt.focus.Component");
logger.setLevel(Level.ALL);
logger.setUseParentHandlers(false);
logger.addHandler(consoleHandler);

我不清楚为什么我需要将 rootLogger 级别设置为 ALL,但这正是我所需要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDK:如何以编程方式启用 PlatformLogger 的相关文章

  • android下拉刷新列表视图出错

    我正在使用功能下拉来刷新library https github com chrisbanes Android PullToRefresh克里斯班斯的 但是当我尝试在我的 xml 文件中导入这个小部件时 它向我显示以下错误 请帮助我如何解决
  • java代码中的问号

    有人能解释一下下面代码中的问号吗 INITIAL PERMANCE 也是代码中的静态最终常量 但是语法的最后一行被称为什么 Synapse AbstractCell inputSource float permanence inputSou
  • 使用 jsoup 收集倒计时器并为 android 设置计时器

    我想解析 eBay 上的倒计时器 span class 5g 20h span 如何用 jsoup 解析它以在 android studio 上创建倒计时器 我可以像平常一样解析它吗element 像下面这样 更新 getMsFromStr
  • PostgreSQL - 限制总日志大小

    我有一个非常简单的要求 PostgreSQL 日志目录应该有固定的最大大小 例如所有 PostgreSQL 日志最大 10 GB 它可以通过创建固定大小的日志并使用日志轮换来实现 例如轮换 10 个日志文件 每个日志文件 1 GB 我尝试使
  • 使用 ThreadCount TestNG 限制并行测试的数量

    我在这里很头疼 我不知道如何处理这个问题 我有几个通过 xml 运行的测试类 约90个测试班 每个班约10 Test进入其中 我配置了一个硒网格 带有maxSession 5因此 单个节点上最多可以并行运行 5 个并行浏览器实例 这是我不明
  • 从批处理文件运行 .jar

    我已经创建了一个可执行文件 jar文件 我怎样才能执行 jar使用批处理文件而不提及类路径 在 Windows 上 您可以使用以下命令 start javaw jar JarFile jar 通过这样做 命令提示符窗口不会保持打开状态
  • 从 android 将用户注册到 QuickBlox 用户

    我正在尝试在我的 Android 应用程序中使用 QuickBlox 我阅读了指南并导入了示例 一切正常 我更改了一些用户可以使用 EditText 作为用户名和另一个密码登录的内容 并且效果很好 但现在我想添加一个注册按钮 使用户能够注册
  • 在 Eclipse 中默认将类设为 Final 吗?

    有没有办法让 Eclipse 中的类默认为final 即 在保存操作中 还是在创建新类对话框中 这确实是一个 hack 但是您可以在 Eclipse 设置中设置以下代码模板 在 Java gt 代码样式 gt 代码模板 gt 代码 gt 新
  • Java:检查数组的相等性(顺序无关紧要)

    我有两个String数组 比方说 String s1 a b c String s2 c a b 这些数组应该相等 我想以 最干净 的方式检查它们的相等性 我尝试使用Arrays equals s1 s2 但我得到了一个错误的答案 我想这个
  • 您可以链接两个 JFormattedTextField 的值吗?

    我有一个带有 2 个 JFormattedTextFields 的界面 我需要它们的值 不仅仅是显示的文本 相同 理想情况下 它们都应该是可编辑的 其中一个的更改会反映在另一个中 我一开始只是在两者之间共享一个文档 但很快就遇到了一个问题
  • 使用 Spring Security 标记库时将异常映射到 404 页面

    将异常映射到 404 页面时 Spring Security 标记无法从安全上下文中找到身份验证信息 通过 真实 404 可以找到身份验证 我的 web xml
  • 如何使用 Spring 使用注释执行基于构造函数的依赖注入?

    好的 如果我需要在构造函数中放入一些原始值 我该怎么做 Autowired public CustomBean String name Qualifier SuperBean SuperBean superBean super this s
  • Android UserManager.isUserAGoat() 的正确用例?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在查看 中引入的新 API安卓4 2 http en wikipedia org wiki Android version
  • 保存新图像时,它会保留旧画布

    我有一个画布 允许用户绘制和保存 它还允许用户更改颜色并在同一画布上使用不同的颜色进行绘制 我的绘画课 package com test testing import android content Context import andro
  • RMI服务器异常

    当我尝试运行使用远程注册表的服务器时 我收到以下来自 RMI 的异常 我的 Server2 类中 main 方法的注册表代码是 Registry registry LocateRegistry getRegistry 192 168 1 4
  • 如何在servlet应用程序中更改用户的tomcat密码?

    我们的 Web 应用程序部署在 Tomcat 上 目前使用 UserDatabaseRealm 来确保安全 我们希望在应用程序中提供一个页面 用户可以在其中更改密码 一个简单 常见的 Web 应用程序功能 我找不到任何示例 servlet
  • docx4j用html替换变量

    我得到了这个示例代码 用文本替换变量 它工作得很好 WordprocessingMLPackage wordMLPackage WordprocessingMLPackage load new java io File c template
  • 如何为 CompletableFuture::supplyAsync 选择执行器

    CompletableFuture supplyAsync gt IO bound queries 如何为 CompletableFuture supplyAsync 选择执行器以避免污染ForkJoinPool commonPool 里面
  • Android - 循环 strings.xml 文件

    我想知道是否有办法循环strings xml file 假设我有以下格式
  • 允许轻松打印字节码指令*包括*参数的库

    我正在寻找一个图书馆easily让我查看方法的给定字节码 例子 ALOAD 0 INVOKEVIRTUAL ns c m I IRETURN 我都尝试过 ASM 我实际上可以让它打印指令和参数 但是我很难理解它的整个访问者范例 也就是说 我

随机推荐

  • 如何对文本文件执行二分搜索

    我有一个大文本文件 5Mb 我在 Android 应用程序中使用它 我将文件创建为预先排序的字符串列表 并且文件一旦创建就不会更改 如何对此文件的内容执行二分搜索 而不需要逐行读取来查找匹配的字符串 由于文件的内容不会改变 因此您可以将文件
  • 可视化链接攻击的最佳方式是什么

    我有一个如下图所示的 Networkx 图 我执行边缘攻击并观察结果子图的节点处的值的变化 例子 如果我攻击边 a 2 边 a 2 和 2 1 将被移除 解释一下 当边 a 2 受到攻击时 节点 2 的度数将 上述攻击会产生一个子图 每一条
  • 如何在选项卡视图控制器故事板应用程序中添加更多选项卡? [复制]

    这个问题在这里已经有答案了 可能的重复 Xcode 4 2 选项卡式应用程序 添加新选项卡视图 https stackoverflow com questions 7952576 xcode 4 2 tabbed application a
  • 如何以编程方式创建触发器对象?

    我正在使用 Springquartz Scheduler 但我没有使用 XML 文件 我想以编程方式创建整个配置 我编写了以下代码 package com eaportal service impl import java text Par
  • 使用 GitLab CI 在本地运行测试?

    如果在 GitLab CI 上配置了 GitLab 项目 是否有办法在本地运行构建 我不想将我的笔记本电脑变成构建 运行者 我只是想利用 Docker 和 gitlab ci yml在本地运行测试 即全部预先配置 这样做的另一个优点是我确信
  • 获取Java InputStream后面的文件的字节数

    正如标题所示 我需要知道文件在输入流 后面 有多少字节 我不想下载所有字节和计数 需要很长时间 我只需要知道文件有多少字节 像这样 int numberOfBytes countBytes inputStream 所以 我需要 countB
  • Haskell - 计算列表中每个不同元素出现的次数

    我是 Haskell 的新手 只是想编写一个列表理解来计算列表中每个不同值的频率 但我在最后一部分遇到了麻烦 到目前为止我有这个 frequency Eq a gt a gt Int a frequency list count y lis
  • 如何使用 css3 动画将宽度和高度设置为 100%?

    我有以下代码 HTML div div css div background tomato width 100px height 100px webkit animation animateThis 0 3s ease in webkit
  • 无法远程连接JMX?

    由于某些奇怪的原因 我无法使用VisualVM or jconsole到 JMX 用于启动要监控的VM的参数 Dcom sun management jmxremote Dcom sun management jmxremote authe
  • 默认情况下,所有 Google Chrome 扩展程序都是开源的吗?

    我想知道如果我编写了 Google Chrome 扩展程序 任何人都可以使用我的代码吗 看起来人们将能够看到您的代码 如果他们可以看到您的代码 他们就有可能使用它 视窗 C Documents and Settings USERNAME L
  • 如何在 PL/SQL 中解析逗号分隔的字符串? [复制]

    这个问题在这里已经有答案了 我在 PL SQL 脚本中有一个逗号分隔的字符串 例如 data a b c d e 我需要在脚本中解析它 我想循环遍历字符串并处理每个项目 就像 foreach 循环一样 这在 PL SQL 中可能吗 有人可以
  • 如何从一个活动组中的活动导航到android中的另一个活动

    我有两个标签 在这两个选项卡中我有不同的活动组 如何从一个活动组中的一个活动导航到android中的另一个活动 请帮我举出合适的例子 就我而言 我确实喜欢这样 当我单击父组最后一个活动中的完成 提交按钮时 我提交了值 将值存储到服务器 数据
  • 在 PHP 中格式化 JSON 格式的文本文件

    所以我得到了一个带有按钮的 HTML 页面 当我单击该按钮时 一个单独的 javascript 文件会向我的 PHP 文件发送 GET 请求 并期望返回 JSON 对象 我的 PHP 读取 JSON 格式的文本文件 并将其转换为 JSONO
  • ASP.NET身份更改密码

    我需要能够由管理员更改用户密码 因此 管理员不应输入用户的当前密码 他应该能够设置新密码 我查看了 ChangePasswordAsync 方法 但该方法需要输入旧密码 因此 此方法不适合此任务 因此我通过以下方式做到了 HttpPost
  • 在 App Store 上发布应用程序后,iAd 未在设备上显示

    检查了有关在 App Store 上发布应用程序后不显示 iAd 的几个问题 对 iAd 进行所有必要的设置 测试广告在模拟器和设备中显示良好 然后发布应用程序并为该应用程序启用 iAd 网络 在iAd Network部分 状态显示为 Li
  • Xcode 4:如何更改 ${EXECUTABLE_NAME} 变量的值?

    我想找到 xcode 4 2 中定义的 EXECUTABLE NAME 全局变量在哪里 您的目标 gt 构建设置 gt 产品名称
  • RSpec 中“it”关键字的作用是什么?

    我正在关注rails3tutorial 在进行如下测试时 我不明白 it 关键字的含义 require spec helper describe UsersController do render views describe GET ne
  • 在android中绘制单点触摸运动路径

    我正在尝试制作一个绘图应用程序 我想要绘制单点触摸运动路径在 android 中 就像 Swype 键盘的方式一样 因此我想存储每个像素的 x y 坐标将运动路径转化为数据结构 我如何使用 MotionEvent 指针来执行此操作 您可能不
  • 使用自定义源增强 Iostreams zlib_error

    我正在尝试使用zlib decompressor通过一个解压缩数据istreambuf iterator 我找不到使用输入迭代器作为流的输入的内置方法 如果已经存在 请指出一种方法 所以我写了这个源代码 template
  • JDK:如何以编程方式启用 PlatformLogger

    我需要以编程方式启用某些 JDK7 内部类的日志记录 这就是我在应用程序初始化时所做的事情 httpLogger Logger getLogger sun net www protocol http HttpURLConnection ht