在不同的文件中记录不同的日志。但是所有日志都放在同一个文件中
Logging different logs in different files. But all logs go in same file
我正在使用 java.util.logging 库进行日志记录。
我的代码如下:
package com.test.vesrionControlSystem.services;
import java.io.IOException;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class TestMain {
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
Logger logger = Logger.getLogger(TestMain.class.getName());
Logger logger1= Logger.getLogger(TestMain.class.getName());
FileHandler fh = new FileHandler("D:\Logs\FirstLogs.%g.log", 10000, 20, true);
FileHandler fh1 = new FileHandler("F:\Logs\SecondLogs.%g.log", 10000, 20, true);
fh.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
}
});
fh1.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
}
});
logger.addHandler(fh);
logger1.addHandler(fh1);
while(true) {
logger.info("printing info");
Thread.sleep(100);
logger1.warning("printing warning");
Thread.sleep(100);
logger.severe("Printing error");
Thread.sleep(100);
}
}
}
此处的信息和严重消息应打印在 firstLogs.log 文件中,而警告消息应打印在 secondsLogs.log 文件中。
但我在两个文件中都看到了所有三条消息(信息、警告和严重)。
请帮助我理解我在这里遗漏了什么。
它与我最近回答的类似,但它是针对 log4j 的。请查看
主要问题是 logger
和 logger1
在您的测试代码中是同名的。更改名称:
Logger logger = Logger.getLogger(TestMain.class.getName() + ".0");
Logger logger1= Logger.getLogger(TestMain.class.getName() + ".1");
如果您想在同一个记录器中进行过滤,请参阅 Logging handler usage
我正在使用 java.util.logging 库进行日志记录。
我的代码如下:
package com.test.vesrionControlSystem.services;
import java.io.IOException;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class TestMain {
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
Logger logger = Logger.getLogger(TestMain.class.getName());
Logger logger1= Logger.getLogger(TestMain.class.getName());
FileHandler fh = new FileHandler("D:\Logs\FirstLogs.%g.log", 10000, 20, true);
FileHandler fh1 = new FileHandler("F:\Logs\SecondLogs.%g.log", 10000, 20, true);
fh.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
}
});
fh1.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
}
});
logger.addHandler(fh);
logger1.addHandler(fh1);
while(true) {
logger.info("printing info");
Thread.sleep(100);
logger1.warning("printing warning");
Thread.sleep(100);
logger.severe("Printing error");
Thread.sleep(100);
}
}
}
此处的信息和严重消息应打印在 firstLogs.log 文件中,而警告消息应打印在 secondsLogs.log 文件中。
但我在两个文件中都看到了所有三条消息(信息、警告和严重)。
请帮助我理解我在这里遗漏了什么。
它与我最近回答的类似,但它是针对 log4j 的。请查看
主要问题是 logger
和 logger1
在您的测试代码中是同名的。更改名称:
Logger logger = Logger.getLogger(TestMain.class.getName() + ".0");
Logger logger1= Logger.getLogger(TestMain.class.getName() + ".1");
如果您想在同一个记录器中进行过滤,请参阅 Logging handler usage