Java记录器不会记录日志
通过研究和修改一些示例代码,可以在日志文件中打印一些内容,但是在运行包时,没有任何内容被打印到日志文件中 主类(Client.java) LogSetup.javaJava记录器不会记录日志,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
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");
}
}