Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java记录器不会记录日志_Java_Logging - Fatal编程技术网

Java记录器不会记录日志

Java记录器不会记录日志,java,logging,Java,Logging,通过研究和修改一些示例代码,可以在日志文件中打印一些内容,但是在运行包时,没有任何内容被打印到日志文件中 主类(Client.java) LogSetup.java import java.io.IOException; import java.text.ParseException; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Ha

通过研究和修改一些示例代码,可以在日志文件中打印一些内容,但是在运行包时,没有任何内容被打印到日志文件中

主类(Client.java)

LogSetup.java

import java.io.IOException;
import java.text.ParseException;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class LogSetup {
    static private FileHandler fileTxt;
    static private LogWriter formatterTxt;

    static public void setup() throws IOException, ParseException {
        Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
        Logger rootLogger = Logger.getLogger("");
        Handler[] handlers = rootLogger.getHandlers();

        if (handlers[0] instanceof ConsoleHandler) {
            logger.removeHandler(handlers[0]);
        }

        logger.setLevel(Level.SEVERE);
        fileTxt = new FileHandler(LogFile.txt");

        // create a TXT formatter
        formatterTxt = new LogWriter();
        fileTxt.setFormatter(formatterTxt);
        logger.addHandler(fileTxt);

    }

}
LogWriter.java

import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;

class LogWriter extends Formatter {
    public String format(LogRecord rec) {
        System.out.println("RECORDING..............");
        StringBuffer buf = new StringBuffer(1000);
        buf.append(rec.getLevel());
        buf.append(calcDate(rec.getMillis()));
        buf.append(formatMessage(rec));
        return buf.toString();
    }

    private String calcDate(long millisecs) {
        SimpleDateFormat date_format = new SimpleDateFormat("MMM dd,yyyy HH:mm\n");
        Date resultdate = new Date(millisecs);
        return date_format.format(resultdate);
    }

    public String getHead(Handler h) {
        return ("START " + new Date()) + "\n";
    }

    public String getTail(Handler h) {
        return "END " + new Date() + "\n";
    }
} 
Log打印开始和结束,但甚至没有进入buff“RECORDING……”中,因此基本上没有记录任何内容。有什么想法吗?

请在示例中加入include语句,以便其他人可以尝试您的代码


如果您使用的是
java.util.logging
,请尝试移动到logback。Logback日志将在没有配置的情况下正确记录。如果您使用的是java.util.logging,那么您需要找到一个关于如何配置它的教程,就像它没有被配置一样,它不会像您期望的那样记录

日志框架使用一个配置文件,您可以在其中设置java.util.logging的“where and what”输出。配置文件位于当前jvm的文件夹lib“/jdk1.x.x/jre/lib/logging.properties”下。我共享我的链接问题是西班牙语

简而言之,搜索下一行并更改信息->全部

java.util.logging.ConsoleHandler.level=INFO java.util.logging.ConsoleHandler.level=ALL

在您的代码中,您只需要记录您想要的消息,例如:

public class TestLog {
    private static final Logger log = Logger.getLogger(TestLog.class.getName());
    public static void doLog() {
        log.info("info log");
        log.fine("fine log");
        log.finer("finer log");
        .....
        log.severe("severe log");
    }
}

始终尝试对ure调试消息使用fine、finer或finest,不要使用INFO,因为始终使用默认配置打印,并且会减慢ure应用程序的速度

您使用哪种框架?slf4j?log4j?java.util.logging?我认为OP使用的是
java.util.logging
java.util.logging。我添加了#includes
public class TestLog {
    private static final Logger log = Logger.getLogger(TestLog.class.getName());
    public static void doLog() {
        log.info("info log");
        log.fine("fine log");
        log.finer("finer log");
        .....
        log.severe("severe log");
    }
}