FileHandler稍微令人困惑的pattern属性可以用于此
handlers=java.util.logging.FileHandler# Default global logging level. .level=INFO#logging level for the foo.bar packagefoo.bar.level=ConFIG java.util.logging.FileHandler.pattern=%h/java%u.log
模式由包含以下特殊组件的字符串组成,这些特殊组件将在运行时被替换:
“ /”本地路径名分隔符
“%t”系统临时目录
“%h”系统属性“ user.home”的值
“%g”世代号以区分旋转的日志
“%u”一个唯一的数字来解决冲突
“ %%”转换为单个百分号“%”
如果要登录到多个文件,则可以通过为多个命名记录器设置多个处理程序来完成
#FileHandler for file1 java.util.logging.FileHandler.pattern = logging_property_test.logjava.util.logging.FileHandler.limit = 50000java.util.logging.FileHandler.count = 1java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter#FileHandler for file2logging.FileHandler2.pattern = logging_property_test2.loglogging.FileHandler2.limit = 50000FileHandler.count = 1logging.FileHandler2.formatter = java.util.logging.SimpleFormatter#setting handler for logger1logging.PropertyTestingLogger.handlers=java.util.logging.FileHandler#setting handler for logger2logging.PropertyTestingLogger2.handlers=logging.FileHandler2
如您所见,诀窍是存在一个logging.FileHandler2,它是一个自定义类,除了扩展FileHandler之外什么也不做
package logging;import java.io.IOException;import java.util.logging.FileHandler;public class FileHandler2 extends FileHandler { public FileHandler2() throws IOException, SecurityException { super(); }}背景
:不幸的是,Java的创建者并不希望任何人登录到多个文件。如果查看java.util.logging.FileHandler的源代码,将会发现pattern属性是由类名加载的:
public class FileHandler extends StreamHandler { private String pattern; private void configure() { String cname = getClass().getName(); pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log");


