Javaでファイルに書きたい(これはJavaでもうまく作成しました)。
私はそれに行を追加する必要があり、私のコードが動作するはずのオンライン指示に従ってください。
私は決してエラーを引き起こすことはありません(キャッチブロックに到達することはありません)。しかし、テキストファイルにはテキストがありません。
すべての変数が正しく設定されています。JavaはFileWriterを使用して既存のファイルに書き込みません
これは私のコードの気圧です:
private void handleException() {
String fullPath = logPath + File.separator + logName;
File logFile = new File(fullPath);
if (!logFile.exists()) {
createLogFile(logFile);
}
String log = createLog();
addLogToFile(fullPath, log);
/*
if (Bad error of errorlogs > 20 ofazo) {
alertAdministrator();
}
*/
}
private void createLogFile(File logFile) {
try {
logFile.getParentFile().mkdirs(); //can cause duplicated files in MacOS
logFile.createNewFile();
} catch (IOException ex) {
Logger.getLogger(ErrorHandeling.class.getName()).log(Level.SEVERE, null, ex);
alertAdministrator("Error while writing logs.\nErrormessage: " + ex.toString());
}
}
private String createLog() {
String log = lineCount + ": " + message + "\n occurred in: file=" + writableStackTrace[0].getFileName() + " class=" + writableStackTrace[0].getClassName() + " method=" + writableStackTrace[0].getMethodName() + " line=" + writableStackTrace[0].getLineNumber() + "\n caused by: " + cause.getMessage();
return log;
}
private void addLogToFile(String fullPath, String log) {
try {
FileWriter fw = new FileWriter(fullPath, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw);
out.println(log);
}
catch (IOException ex) {
alertAdministrator("Error while writing logs.\nErrormessage: " + ex.toString());
}
}
は多分ちょうどロギングフレームワークを使用して閉じていますか?私はかなり確信していますlog4j2ファイルに追加する問題はありません... –
ヒント:**常にあなたの 'AutoCloseable'リソース**を閉じます。 –
PrintWriterの初期化を 'PrintWriter out = new PrintWriter(bw、true);に変更してください。 –