0
我正在使用SimpleFormatter編寫日誌文件。這些是用XML而不是純文本編寫的。我將它寫成純文本的答案都只是說使用簡單的格式化程序(例如https://stackoverflow.com/a/10469185/651779)。這是我的自定義記錄格式,從SimpleFormatter延伸:如何在Java中記錄純文本? SimpleFormatter還編寫XML
class CustomRecordFormatter extends SimpleFormatter {
@Override
public String format(final LogRecord r) {
StringBuilder sb = new StringBuilder();
sb.append(formatMessage(r)).append(System.getProperty("line.separator"));
if (null != r.getThrown()) {
sb.append("Throwable occurred: "); //$NON-NLS-1$
Throwable t = r.getThrown();
PrintWriter pw = null;
try {
StringWriter sw = new StringWriter();
pw = new PrintWriter(sw);
t.printStackTrace(pw);
sb.append(sw.toString());
} finally {
if (pw != null) {
try {
pw.close();
} catch (Exception e) {
// ignore
}
}
}
}
return sb.toString();
}
}
,這是我如何設置記錄
public class DeconvolutionLogger {
static private FileHandler outfilePath;
protected final static Logger log = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
static public void setup(String outputDir) throws IOException {
// get the global logger to configure it
log.setLevel(Level.INFO);
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = new Date();
setOutfilePath(new FileHandler(outputDir+"/DeconvolutionLog_"+dateFormat.format(date)+".txt"));
CustomRecordFormatter customFormatter = new CustomRecordFormatter();
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setFormatter(customFormatter);
log.setUseParentHandlers(false);
log.addHandler(consoleHandler);
log.addHandler(outfilePath);
}
}
我缺少什麼,它不寫純文本?