Java日志记录:配置
时间:2020-01-09 10:36:44 来源:igfitidea点击:
可以通过两种方式配置Java Logging API:
- 通过配置类。
- 通过配置文件。
java.util.logging.LogManager
类负责配置的初始化。
配置类别
我们可以使用Java类来配置Java Logging API。通过在JVM参数java.util.logging.config.class
中指定类的名称来实现。是该类的构造函数应加载配置并将其应用于层次结构中的" Logger"。
配置文件
如果未指定任何配置类,则可以指定一个配置文件(但此时不能指定任何配置类!)。
Java Logging API在JRE目录中的" lib / logging.properties"中具有一个默认的日志配置文件。如果编辑此文件,则将为每个执行的程序编辑整个JRE的默认日志记录设置。不过,这通常不是我们想要执行的操作。
相反,我们可以为应用程序设置一个单独的配置文件。我们可以通过将JVM属性java.util.logging.config.file
设置为指向该文件来实现。
我们从Java知道配置文件是一个标准的属性文件。在该属性文件中,我们可以设置属性,以配置应用程序中使用的各种" Logger"和" Handler"。
这是我们可以在配置文件中设置的属性列表。我们应该仔细检查JavaDoc,以查看是否有任何更改(例如,在Java版本高于Java 6的情况下)。
属性 | 描述 |
handlers | 要添加到根Logger |
config | 类名的空格或者逗号分隔列表,将在初始化LogManager时实例化。 这些类的构造函数可以执行任意配置代码。 |
"logger" .handlers | 设置用于层次结构中给定Logger 的处理程序类。在应用中(例如com.Hyman.web)将"logger"替换为"Logger"的特定名称。 |
"logger" .useParentHandlers | 告诉给定的Logger是否应该登录其父级(是或者否)。 |
"logger" .level | 告诉给定的"Logger"应该记录的最低日志级别。 |
java.util.logging.FileHandler.level | 设置所有FileHandler 的默认日志级别。 |
java.util.logging.FileHandler.filter | 要在所有FileHandler 上使用的Filter 的类名。 |
java.util.logging.FileHandler.formatter | 要在所有FileHandler上使用的Formatter的类名。 |
java.util.logging.FileHandler.encoding | 所有FileHandler都使用的编码(例如UTF-8,UTF-16等)。 |
java.util.logging.FileHandler.limit | 在旋转到新文件之前,写入日志文件的大概字节数。 |
java.util.logging.FileHandler.count | 在日志文件轮换中使用的日志文件数。 |
java.util.logging.FileHandler.append | 设置是否在发现现有日志文件的情况下,是否应将FileHandler追加到现有文件中(是或者否)。 |
java.util.logging.FileHandler.pattern | 日志文件名模式。 |
java.util.logging.ConsoleHandler.level | 设置所有ConsoleHandler 的默认日志级别。 |
java.util.logging.ConsoleHandler.filter | 设置Filter 以供所有ConsoleHandler '使用 |
java.util.logging.ConsoleHandler.formatter | 设置Formatter 以供所有ConsoleHandler 使用。 |
java.util.logging.ConsoleHandler.encoding | 设置所有ConsoleHandler使用的编码。 |
java.util.logging.StreamHandler.level | 设置所有StreamHandler 的默认日志级别。 |
java.util.logging.StreamHandler.filter | 设置Filter 以供所有StreamHandler 的使用 |
java.util.logging.StreamHandler.formatter | 设置Formatter 以供所有StreamHandler 使用。 |
java.util.logging.StreamHandler.encoding | 设置所有StreamHandler使用的编码。 |
java.util.logging.SocketHandler.level | 设置所有SocketHandler 的默认日志级别。 |
java.util.logging.SocketHandler.filter | 设置Filter 供所有SocketHandler 使用。 |
java.util.logging.SocketHandler.formatter | 设置Formatter 供所有SocketHandler 使用。 |
java.util.logging.SocketHandler.encoding | 设置所有SocketHandler 使用的编码。 |
java.util.logging.SocketHandler.host | 设置将日志消息发送到的主机的主机名(例如Hyman.com)。 |
java.util.logging.SocketHandler.port | 设置将日志消息发送到的主机的端口号(例如9999)。 |
java.util.logging.MemoryHandler.level | 设置所有MemoryHandler 的默认日志级别。 |
java.util.logging.MemoryHandler.filter | 设置“过滤器"以供所有"MemoryHandler"使用。 |
java.util.logging.MemoryHandler.size | 内部LogRecord 缓冲区的大小。 |
java.util.logging.MemoryHandler.push | 消息的推送级别,导致缓冲区被推送到目标Handler。默认为SEVERE。 |
java.util.logging.MemoryHandler.target | 目标Handler 的类名。 |
这是一个示例配置文件。并非所有属性都设置为一个值。我们应该在自己的配置文件中执行此操作,如果没有值,请忽略配置参数。
注意:配置属性按照在配置文件中列出的顺序应用。这意味着,我们应该在子Logger之前配置父Logger。否则,父Logger
的配置将覆盖子Logger
的配置。
handlers = java.util.logging.FileHandler config = "logger".handlers = "logger".useParentHandlers = "logger".level = java.util.logging.FileHandler.level = WARNING java.util.logging.FileHandler.filter = java.util.logging.FileHandler.formatter = java.util.logging.FileHandler.encoding = java.util.logging.FileHandler.limit = java.util.logging.FileHandler.count = java.util.logging.FileHandler.append = false java.util.logging.FileHandler.pattern = log.%u.%g.txt java.util.logging.ConsoleHandler.level = WARNING java.util.logging.ConsoleHandler.filter = java.util.logging.ConsoleHandler.formatter = java.util.logging.ConsoleHandler.encoding = java.util.logging.StreamHandler.level = WARNING java.util.logging.StreamHandler.filter = java.util.logging.StreamHandler.formatter = java.util.logging.StreamHandler.encoding = java.util.logging.SocketHandler.level = WARNING java.util.logging.SocketHandler.filter = java.util.logging.SocketHandler.formatter = java.util.logging.SocketHandler.encoding = java.util.logging.SocketHandler.host = java.util.logging.SocketHandler.port = java.util.logging.MemoryHandler.level = WARNING java.util.logging.MemoryHandler.filter = java.util.logging.MemoryHandler.size = java.util.logging.MemoryHandler.push = java.util.logging.MemoryHandler.target =