I initialize my FileHandler as follows:
private Handler initializeFileHandler() { LogManager.getLogManager().reset(); Handler handler = null; try { Files.deleteIfExists(Paths.get(logPath)); handler = new FileHandler(logPath); handler.setLevel(Level.FINER); handler.setEncoding(StandardCharsets.UTF_8.name()); handler.setFormatter(new Formatter() { @Override public String format(LogRecord record) { return String.format( "%s: Class: %s; Type: %s; %s%s", formatter.format(LocalDateTime.now()), record.getLoggerName(), record.getLevel(), record.getMessage(), System.lineSeparator() ); } }); } catch (IOException ex) { //noinspection UseOfSystemOutOrSystemErr System.err.println("Fehler beim initialisieren vom FileHandler"); //noinspection CallToPrintStackTrace ex.printStackTrace(); //noinspection CallToSystemExit System.exit(1); } return handler; }
and add it to my Logger like this:
public ConcurrentLogger initializeLogger(ConcurrentLogger logger) { logger.addHandler(fileHandler); Handler handler = new ConsoleHandler(); handler.setLevel(Level.FINER); logger.addHandler(handler); logger.setLevel(Level.ALL); return logger; }
If i remove the setEncoding
on my FileHandler, its sill is wrong. But strangely, if i add the exact same Encoding to my ConsoleHandler, it stops working too. (But without the explicit set, it works at least in my IntelliJ-Console).
IntelliJ-Console WITHOUT the explicit encoding (same code as above):
INFORMATION: BruteForce wird planmäßig beendet.
Ouput in the .log File:
INFORMATION: BruteForce wird planmäßig beendet.
It looks same in Notepad++ and IntelliJ. How do i set the UTF-8 Encoding Properly? Notepad++ show the File is encoded in UTF-8, but still looks broken.
(Btw. it doesnt Matter if i use .toString()
or name()
on the UTF_8
Instance)
Advertisement
Answer
IntelliJ shows the File-Encoding in the lower right. On the affected Class it shows “UTF-8”, so thats correct.
But i found in the Settings in “Editor->File Encodings” two Settings called “Global Encoding” and “Project Encoding”. The first was already UTF-8, the latter ISO8859_1. I changed that and the Output-File works as intended now, with proper encoding. I just needed to add the Encoding to the ConsoleHandler now too, cause that was broken now.