我正在尝试为我的插件创建一个新的记录器。但是它不会将任何内容写入文件。日志记录事件不会出错。如果我不提供处理程序,我可以在控制台中获取所有日志事件。
似乎记录器正在处理该文件,因为它创建了一个chatlog.log.lck
文件。
随后,有没有办法记录登录到我的" new"记录器,还有控制台?
private void setupLogger() {
logger = Logger.getLogger("WeChat");
File lf = new File(getDataFolder() + File.separator + "logs");
if (!(lf.exists())){
lf.mkdirs();
}
try {
FileHandler fh = new FileHandler(getDataFolder() + File.separator + "logs" + File.separator + "chatlog.log", true);
SimpleFormatter fmt = new SimpleFormatter();
fh.setFormatter(fmt);
logger.addHandler(fh);
logger.setLevel(Level.INFO);
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
}
我再次可以在控制台中输入,只是没有文件
[23:48:24 INFO]: [WeChat] [Channel TheLounge] WASasquatch: Hello everyone!?
[23:48:30 INFO]: [WeChat] [Channel TheLounge] WASasquatch: Test test
[23:48:36 INFO]: [WeChat] [Channel TheLounge] WASasquatch: This in the log file now?
答案 0 :(得分:0)
FileHandler
中有一个构造函数可以将文件设置为append或not。 (如果需要,设置滚动文件系统,不存在滚动系统的相同构造函数。)
public FileHandler(String pattern,
int limit,
int count,
boolean append)
throws IOException,
SecurityException
根据需要定义此处理程序的级别defaults to Level.ALL
以下是一个快速示例:
public class Main {
static Logger logger;
public static void main(String[] args) {
logger = Logger.getLogger("Main");
FileHandler fh;
File lf = new File("data" + File.separator + "logs" + File.separator + "chatlog.log");
if (!(lf.getParentFile().exists())){
lf.getParentFile().mkdirs();
}
try {
fh = new FileHandler(lf.getCanonicalPath(), 8096, 1, true);
logger.addHandler(fh);
logger.setLevel(Level.INFO);
SimpleFormatter fmt = new SimpleFormatter();
fh.setFormatter(fmt);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("foo");
logger.info("bar");
}
}
请注意更新以使用File
实例路径,而不是重新创建String。
我使用不存在的文件夹。按预期启动该过程两次,将该文件作为执行行。