【问题标题】:Where Do I see the logs in my program我在哪里可以看到我的程序中的日志
【发布时间】:2012-07-09 13:19:56
【问题描述】:

我正在使用默认的java.util.Logging API 将信息打印到我的日志中。

Logger.getLogger(Datastore.class.getName());
logger.info("Registering ");

其中 Datastore 是类的名称。但我无法找到日志的存储位置。我在 Windows 7 机器上运行,上面的程序是 servlet 的一部分。对于这个看似愚蠢的问题,我深表歉意,但有时这种微不足道的事情会极大地阻碍进展。

【问题讨论】:

  • 假设你使用java.util.logging.Logger,并且根logger已经添加了一个FileHandler(默认只有一个ConsoleHandler可用),并且没有明确提供日志文件名,那么日志文件是 C:\Users\YourUserName\javaN.log 其中 N 是一个数字。见docs.oracle.com/javase/7/docs/api/java/util/logging/…

标签: java logging


【解决方案1】:

默认情况下,java.util.logging.Logger 将输出发送到控制台并且不会打印到文件中。您必须将java.util.logging.Handler 添加到记录器。 下面是sn-ps来创建HTML、TEXTFILE的Handlers。希望这会有所帮助。

package logging;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class MyLogger {
    static private FileHandler fileTxt;
    static private SimpleFormatter formatterTxt;

    static private FileHandler fileHTML;
    static private Formatter formatterHTML;

    static public void setup() throws IOException {
        // Create Logger
        Logger logger = Logger.getLogger("");
        logger.setLevel(Level.INFO);
        fileTxt = new FileHandler("Logging.txt");
        fileHTML = new FileHandler("Logging.html");

        // Create txt Formatter
        formatterTxt = new SimpleFormatter();
        fileTxt.setFormatter(formatterTxt);
        logger.addHandler(fileTxt);

        // Create HTML Formatter
        formatterHTML = new MyHtmlFormatter();
        fileHTML.setFormatter(formatterHTML);
        logger.addHandler(fileHTML);
    }
} 

如需进一步参考,请阅读此article

【讨论】:

    【解决方案2】:

    您可以向 Logger 添加一个处理程序,以指定日志的位置。

    Handler handler = new FileHandler("DataStore.log");
    Logger logger = Logger.getLogger(Datastore.class.getName());
    logger.addHandler(handler);
    logger.info("Registering ");
    

    记录器只创建日志对象,但真正显示它的是处理程序。处理程序可以是从Handler 定义的任何子类。如果你使用 FileHandler,你应该阅读 FileHandler 的 Java API。

    【讨论】:

      【解决方案3】:

      检查 log4j 配置文件,其中包含更新日志位置的路径。 Check this for reference.

      【讨论】:

        【解决方案4】:

        如果你没有 log4j 配置文件(假设 Logger 来自 log4j),事情会变得非常安静。

        对于初学者,请尝试在类目录的根目录中添加属性文件,例如:

        # Set root logger level to DEBUG and its only appender to A1.
        log4j.rootLogger=DEBUG, A1
        
        # A1 is set to be a ConsoleAppender.
        log4j.appender.A1=org.apache.log4j.ConsoleAppender
        
        # A1 uses PatternLayout.
        log4j.appender.A1.layout=org.apache.log4j.PatternLayout
        log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
        

        来自here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-17
          • 1970-01-01
          • 1970-01-01
          • 2020-04-19
          • 1970-01-01
          • 2011-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多