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 =

