如何解决如何在java中的文件中打印我的所有日志信息
从其他来源我已经阅读了使用记录器的一种方法
public static void main(String[] args) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fh;
try {
// This block configure the logger with handler and formatter
fh = new FileHandler("C:/temp/test/MyLogFile.log");
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
// the following statement is used to log any messages
logger.info("My first log");
} catch (SecurityException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
logger.info("Hi How r u?");
}
在上面的例子中,记录器信息是我们输入的。但是如何将从我的程序返回的所有现有警告信息打印到输出文本文件。我可以将程序中给出的控制台输出打印到文件中,而其他警告信息和日志则打印在我的控制台中。还有其他方法吗?
解决方法
不要使用 e.printStackTrace() 语句,而是在 catch 块中尝试使用类似 logger.log(Level.ALL,e.getMessage(),e) 的语句。
例如
import java.util.logging.Level;
import java.util.logging.Logger;
...
catch (SecurityException e) {
logger.log(Level.ALL,e);
}
catch (IOException e) {
logger.log(Level.ALL,e);
}
你也可以试试 Log4J
,问题是其他代码很可能使用了不同的记录器。使用 java.util.logging,您可以在应用程序启动时立即配置根记录器,其他记录器将继承该配置。
private static void configureRootLogger() {
try {
FileHandler fh = new FileHandler("MyLogFile.log");
fh.setFormatter(new SimpleFormatter());
Logger.getLogger("").addHandler(fh);
} catch (IOException e) {
// handle exception
}
}
完整示例:
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class LogToFileExample {
private static final Logger logger = Logger.getLogger("MyLogA");
public static void main(String[] args) {
configureRootLogger();
logger.info("local test message");
final LogTester tester = new LogTester();
tester.logMessage();
}
private static void configureRootLogger() {
try {
FileHandler fh = new FileHandler("MyLogFile.log");
fh.setFormatter(new SimpleFormatter());
Logger.getLogger("").addHandler(fh);
} catch (IOException e) {
logger.warning("Could not add handler to log to file");
}
}
}
import java.util.logging.Logger;
public class LogTester {
private static final Logger logger = Logger.getLogger("MyLogB");
public void logMessage() {
logger.info("external log message");
}
}
文件和控制台输出相同:
May 28,2021 9:44:50 AM org.testing.LogToFileExample main
INFO: local test message
May 28,2021 9:44:50 AM org.testing.LogTester logMessage
INFO: external log message
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。