能够通过研究和修改一些示例代码在日志文件中打印一些内容,但在运行包时,没有任何内容被打印到日志文件中。
主类(Client.java)
public class Client {
static Logger LOGGER = Logger.getLogger(Client.class.getName());
public static void main(String[] args) {
Client logger = new Client();
try {
LogSetup.setup();
emsSession = logger.Initialise();
logger.getAllMEInfo();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Problems with creating the log files");
}
}
private void getAllMEInfo() {
LOGGER.setLevel(Level.INFO);
LOGGER.severe("Info Log");
LOGGER.warning("Info Log");
LOGGER.info("Info Log");
LOGGER.finest("Really not important");
// Some codes for the method
}
}
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";
}
}
日志打印START和END,但是甚至没有输入buff"" RECORDING .............."&#34 ;所以基本上没有记录任何东西。任何想法???
答案 0 :(得分:0)
请在您的示例中添加include语句,以便其他人可以尝试您的代码。
如果您使用的是java.util.logging
,请尝试迁移到logback。无需配置即可正确记录日志记录日志。如果您正在使用java.util.logging,那么您需要找到有关如何配置它的教程,就好像它没有配置它没有像您期望的那样记录。
答案 1 :(得分:0)
日志记录框架使用一个配置文件,你可以在其中设置“where和what”输出,对于java.util.logging,配置文件位于ur current jvm的文件夹lib下“/jdk1.xx/jre/lib /logging.properties“我分享我的链接问题是西班牙文config logging
简而言之,搜索下一行并更改信息 - > ALL
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");
}
}
总是尝试使用精细,更精细或最好的用于调试消息,不要使用INFO,因为始终在默认配置上打印并且可以减慢应用程序