我有一个loggers.config文件,它指定一个自定义文件处理程序来格式化日志消息到文件。除非创建具有指定文件模式的默认文件,否则处理程序将无法工作。然后它创建一个新的文件,如图案所指定的那样附加一个0,并开始记录到该文件。如何在不先指定默认文件的情况下将其记录到文件中。
以下是日志记录文件:
handlers=com.daniel.logging.MyFileHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= INFO
com.daniel.logging.MyFileHandler.level=INFO
# Naming style for the output file:
com.daniel.logging.MyFileHandler.pattern=daniel%g.log
# Limiting size of output file in bytes -defaulted to 1MB:
com.daniel.logging.MyFileHandler.limit=1MB
# Number of output files to cycle through, by appending an
# integer to the base file name:
com.daniel.logging.MyFileHandler.count=10
# Style of output (Simple or XML):
com.daniel.logging.MyFileHandler.formatter=com.daniel.logging.MyLogFormatter
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
在安装程序中(这是一个应用程序日志记录属性文件,创建了一个文件,有一行将logger.config文件指定为logger.properties。稍后创建一个文件并输入命令CMD [@] >> default_file 2>& 1.我不确定那行是什么(我对bash来说很新)
答案 0 :(得分:0)
检查程序正在执行的用户帐户是否具有文件路径的写入权限。
com.daniel.logging.MyFileHandler.limit = 1MB
应该改为:
com.daniel.logging.MyFileHandler.limit=1048576
您的文件模式使用相对路径。您应该使用绝对路径或使用home或temp目录的模式。 FileHandler将无法创建新的日志文件if the directory path doesn't exist。在FileHandler创建日志文件之前,目录必须存在。
如果你想在文件模式中使用SimpleDateFormat模式,你可以这样做:
public final class MyFileHandler extends FileHandler {
public MyFileHandler() throws IOException {
super(toPattern());
}
private static String toPattern() throws IOException {
String defaultPattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
String p = MyFileHandler.class.getName();
String v = LogManager.getLogManager().getProperty(p + ".pattern");
if (v == null) {
v = defaultPattern;
}
try {
return new SimpleDateFormat(v).format(new Date());
} catch (RuntimeException re) {
throw new IOException(v, re);
}
}
}
如果您需要轮换支持,可以参考PackageNameFileHandler作为起点。