如何在java中的文件中打印我的所有日​​志信息

如何解决如何在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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?