➕ 添加依赖:添加并引入Slf4j api 与 logback作为项目日志框架,已替换项目内控制台输出,简单封装了日志工具类
This commit is contained in:
parent
b1662b717a
commit
79e368dc17
13
pom.xml
13
pom.xml
@ -37,7 +37,18 @@
|
|||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
<version>2.10.1</version>
|
<version>2.10.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- SLF4J API -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>1.7.32</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- SLF4J Binding (Logback) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>1.2.9</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -4,6 +4,7 @@ module org.jcnc.jnotepad {
|
|||||||
// requires cn.hutool.json;
|
// requires cn.hutool.json;
|
||||||
// requires cn.hutool.core;
|
// requires cn.hutool.core;
|
||||||
requires com.google.gson;
|
requires com.google.gson;
|
||||||
|
requires org.slf4j;
|
||||||
exports org.jcnc.jnotepad;
|
exports org.jcnc.jnotepad;
|
||||||
exports org.jcnc.jnotepad.tool;
|
exports org.jcnc.jnotepad.tool;
|
||||||
exports org.jcnc.jnotepad.Interface;
|
exports org.jcnc.jnotepad.Interface;
|
||||||
@ -13,4 +14,5 @@ module org.jcnc.jnotepad {
|
|||||||
exports org.jcnc.jnotepad.view.manager;
|
exports org.jcnc.jnotepad.view.manager;
|
||||||
exports org.jcnc.jnotepad.constants;
|
exports org.jcnc.jnotepad.constants;
|
||||||
exports org.jcnc.jnotepad.ui;
|
exports org.jcnc.jnotepad.ui;
|
||||||
|
exports org.jcnc.jnotepad.exception;
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ import javafx.event.ActionEvent;
|
|||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
|
import org.jcnc.jnotepad.tool.LogUtil;
|
||||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ public class SaveAsFile implements EventHandler<ActionEvent> {
|
|||||||
selectedTab.setText(file.getName()); // 更新Tab页标签上的文件名
|
selectedTab.setText(file.getName()); // 更新Tab页标签上的文件名
|
||||||
selectedTab.setUserData(file); // 将文件对象保存到Tab页的UserData中
|
selectedTab.setUserData(file); // 将文件对象保存到Tab页的UserData中
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
System.out.println("已忽视IO异常!");
|
LogUtil.info("已忽略IO异常!",this.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import org.jcnc.jnotepad.controller.event.handler.NewFile;
|
|||||||
import org.jcnc.jnotepad.controller.event.handler.OpenFile;
|
import org.jcnc.jnotepad.controller.event.handler.OpenFile;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.SaveAsFile;
|
import org.jcnc.jnotepad.controller.event.handler.SaveAsFile;
|
||||||
import org.jcnc.jnotepad.tool.EncodingDetector;
|
import org.jcnc.jnotepad.tool.EncodingDetector;
|
||||||
|
import org.jcnc.jnotepad.tool.LogUtil;
|
||||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||||
|
|
||||||
@ -107,9 +108,9 @@ public class Controller implements ControllerInterface {
|
|||||||
if (file != null) {
|
if (file != null) {
|
||||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
|
||||||
writer.write(newValue);
|
writer.write(newValue);
|
||||||
System.out.println("正在自动保存---");
|
LogUtil.info("正在自动保存---",this.getClass());
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
System.out.println("已忽视IO异常!");
|
LogUtil.info("已忽略IO异常!",this.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,7 +185,7 @@ public class Controller implements ControllerInterface {
|
|||||||
autoSave(textArea);
|
autoSave(textArea);
|
||||||
});
|
});
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
System.out.println("已忽视IO异常!");
|
LogUtil.info("已忽略IO异常!",this.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.scene.input.KeyCombination;
|
import javafx.scene.input.KeyCombination;
|
||||||
import org.jcnc.jnotepad.Interface.ShortcutKeyInterface;
|
import org.jcnc.jnotepad.Interface.ShortcutKeyInterface;
|
||||||
|
import org.jcnc.jnotepad.tool.LogUtil;
|
||||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@ -33,7 +34,7 @@ public class ShortcutKey implements ShortcutKeyInterface {
|
|||||||
jsonData.append(line);
|
jsonData.append(line);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
LogUtil.error(e.getMessage(),e,this.getClass());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// todo new InputStreamReader(inputStream) 实参 'inputStream' 可能为null
|
// todo new InputStreamReader(inputStream) 实参 'inputStream' 可能为null
|
||||||
@ -43,7 +44,7 @@ public class ShortcutKey implements ShortcutKeyInterface {
|
|||||||
jsonData.append(line);
|
jsonData.append(line);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
LogUtil.error(e.getMessage(),e,this.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
src/main/java/org/jcnc/jnotepad/exception/AppException.java
Normal file
14
src/main/java/org/jcnc/jnotepad/exception/AppException.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package org.jcnc.jnotepad.exception;
|
||||||
|
import org.jcnc.jnotepad.tool.LogUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用异常类
|
||||||
|
*
|
||||||
|
* @author gewuyou
|
||||||
|
*/
|
||||||
|
public class AppException extends RuntimeException{
|
||||||
|
public AppException(String message) {
|
||||||
|
super(message);
|
||||||
|
LogUtil.error(message,this.getClass());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,7 +36,7 @@ public class EncodingDetector {
|
|||||||
// 尝试常见的编码
|
// 尝试常见的编码
|
||||||
for (Charset charset : commonCharsets()) {
|
for (Charset charset : commonCharsets()) {
|
||||||
if (isValidEncoding(text, charset)) {
|
if (isValidEncoding(text, charset)) {
|
||||||
System.out.println("编码监测结果:" + isValidEncoding(text, charset));
|
LogUtil.info("编码监测结果:" + isValidEncoding(text, charset), EncodingDetector.class);
|
||||||
return charset.name();
|
return charset.name();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ public class FileUtil {
|
|||||||
jsonStr = sb.toString();
|
jsonStr = sb.toString();
|
||||||
return jsonStr;
|
return jsonStr;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
LogUtil.error(e.getMessage(),e,FileUtil.class);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
79
src/main/java/org/jcnc/jnotepad/tool/LogUtil.java
Normal file
79
src/main/java/org/jcnc/jnotepad/tool/LogUtil.java
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package org.jcnc.jnotepad.tool;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日志工具类
|
||||||
|
*
|
||||||
|
* @author gewuyou
|
||||||
|
*/
|
||||||
|
public class LogUtil {
|
||||||
|
private LogUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日志信息打印
|
||||||
|
*
|
||||||
|
* @param message 日志信息
|
||||||
|
* @param currentClass 所要记录的类
|
||||||
|
*
|
||||||
|
* @apiNote 传入当前需要记录的类,方便知晓是哪个位置记录的日志
|
||||||
|
*/
|
||||||
|
public static void info(String message, Class<?> currentClass) {
|
||||||
|
Logger logger = LoggerFactory.getLogger(currentClass);
|
||||||
|
logger.info(message);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 日志排错信息打印
|
||||||
|
*
|
||||||
|
* @param message 日志信息
|
||||||
|
* @param currentClass 所要记录的类
|
||||||
|
*
|
||||||
|
* @apiNote 传入当前需要记录的类,方便知晓是哪个位置记录的日志
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void debug(String message, Class<?> currentClass) {
|
||||||
|
Logger logger = LoggerFactory.getLogger(currentClass);
|
||||||
|
logger.debug(message);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 日志警告信息打印
|
||||||
|
*
|
||||||
|
* @param message 日志信息
|
||||||
|
* @param currentClass 所要记录的类
|
||||||
|
*
|
||||||
|
* @apiNote 传入当前需要记录的类,方便知晓是哪个位置记录的日志
|
||||||
|
*/
|
||||||
|
public static void warn(String message, Class<?> currentClass) {
|
||||||
|
Logger logger = LoggerFactory.getLogger(currentClass);
|
||||||
|
logger.warn(message);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 日志错误信息打印
|
||||||
|
*
|
||||||
|
* @param message 日志信息
|
||||||
|
* @param currentClass 所要记录的类
|
||||||
|
*
|
||||||
|
* @apiNote 传入当前需要记录的类,方便知晓是哪个位置记录的日志
|
||||||
|
*/
|
||||||
|
public static void error(String message, Class<?> currentClass) {
|
||||||
|
Logger logger = LoggerFactory.getLogger(currentClass);
|
||||||
|
logger.error(message);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 日志错误信息打印
|
||||||
|
*
|
||||||
|
* @param message 日志信息
|
||||||
|
* @param throwable 抛出的异常
|
||||||
|
* @param currentClass 所要记录的类
|
||||||
|
*
|
||||||
|
* @apiNote 这个方法用来弥补当抛出异常或手动抛出异常时,无法捕捉到所抛异常
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void error(String message, Throwable throwable, Class<?> currentClass) {
|
||||||
|
Logger logger = LoggerFactory.getLogger(currentClass);
|
||||||
|
logger.error(message, throwable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -5,6 +5,7 @@ import javafx.scene.Scene;
|
|||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
|
import org.jcnc.jnotepad.exception.AppException;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -25,9 +26,7 @@ public class ViewManager {
|
|||||||
private int tabIndex = 0;
|
private int tabIndex = 0;
|
||||||
|
|
||||||
private Boolean line = true;
|
private Boolean line = true;
|
||||||
|
|
||||||
/// 菜单栏组件
|
/// 菜单栏组件
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单栏
|
* 菜单栏
|
||||||
*/
|
*/
|
||||||
@ -177,7 +176,7 @@ public class ViewManager {
|
|||||||
if (instance != null) {
|
if (instance != null) {
|
||||||
return instance;
|
return instance;
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("ViewManager的实例未初始化!");
|
throw new AppException("ViewManager实例未初始化!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +188,6 @@ public class ViewManager {
|
|||||||
private ViewManager(Scene scene) {
|
private ViewManager(Scene scene) {
|
||||||
root = new BorderPane();
|
root = new BorderPane();
|
||||||
scene.setRoot(root);
|
scene.setRoot(root);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user