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    =