java logging api_Java Logging API生成空的日志文件

我尝试遍历有关Java日志记录API的教程:

但是生成的文件是空的(在Netbeans,Eclipse中进行了测试以及从cmd运行jar)。日志消息仅显示在控制台中。

以下是项目中使用的文件。发生这种行为的原因可能是什么?

项目:de.vogella.logger

MyHtmlFormatter.java

package de.vogella.logger;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.Formatter;

import java.util.logging.Handler;

import java.util.logging.Level;

import java.util.logging.LogRecord;

//This custom formatter formats parts of a log record to a single line

class MyHtmlFormatter extends Formatter {

// This method is called for every log records

public String format(LogRecord rec) {

StringBuffer buf = new StringBuffer(1000);

// Bold any levels >= WARNING

buf.append("

");

buf.append("

");

if (rec.getLevel().intValue() >= Level.WARNING.intValue()) {

buf.append("");

buf.append(rec.getLevel());

buf.append("");

} else {

buf.append(rec.getLevel());

}

buf.append("

");

buf.append("

");

buf.append(calcDate(rec.getMillis()));

buf.append(' ');

buf.append(formatMessage(rec));

buf.append('\n');

buf.append("

");

buf.append("

\n");

return buf.toString();

}

private String calcDate(long millisecs) {

SimpleDateFormat date_format = new SimpleDateFormat("MMM dd,yyyy HH:mm");

Date resultdate = new Date(millisecs);

return date_format.format(resultdate);

}

// This method is called just after the handler using this

// formatter is created

public String getHead(Handler h) {

return "\n

\n" + (new Date())

+ "\n\n

\n
\n"

+ "

+ "

Level" +

"

Time" +

"

Log Message" +

"

\n";

}

// This method is called just after the handler using this

// formatter is closed

public String getTail(Handler h) {

return "

\n \n\n";

}

}

MyLogger.java

package de.vogella.logger;

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 {

// Get the global logger to configure it

Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

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);

}

}

UseLogger.java

package de.vogella.logger.test;

import java.io.IOException;

import java.util.logging.Level;

import java.util.logging.Logger;

import de.vogella.logger.MyLogger;

public class UseLogger {

// Always use the classname, this way you can refactor

private final static Logger LOGGER = Logger.getLogger(UseLogger.class

.getName());

public void doSomeThingAndLog() {

// Image here some real work

// Now we demo the logging

// Set the LogLevel to Severe, only severe Messages will be written

LOGGER.setLevel(Level.SEVERE);

LOGGER.severe("Info Log");

LOGGER.warning("Info Log");

LOGGER.info("Info Log");

LOGGER.finest("Really not important");

// Set the LogLevel to Info, severe, warning and info will be written

// Finest is still not written

LOGGER.setLevel(Level.INFO);

LOGGER.severe("Info Log");

LOGGER.warning("Info Log");

LOGGER.info("Info Log");

LOGGER.finest("Really not important");

}

public static void main(String[] args) {

UseLogger tester = new UseLogger();

try {

MyLogger.setup();

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException("Problems with creating the log files");

}

tester.doSomeThingAndLog();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值