添加依赖:添加并引入Slf4j api 与 logback作为项目日志框架,已替换项目内控制台输出,简单封装了日志工具类

This commit is contained in:
gewuyou 2023-08-21 18:29:29 +08:00
parent b1662b717a
commit 79e368dc17
10 changed files with 120 additions and 13 deletions

13
pom.xml
View File

@ -37,7 +37,18 @@
<artifactId>gson</artifactId>
<version>2.10.1</version>
</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>
<build>

View File

@ -4,6 +4,7 @@ module org.jcnc.jnotepad {
// requires cn.hutool.json;
// requires cn.hutool.core;
requires com.google.gson;
requires org.slf4j;
exports org.jcnc.jnotepad;
exports org.jcnc.jnotepad.tool;
exports org.jcnc.jnotepad.Interface;
@ -13,4 +14,5 @@ module org.jcnc.jnotepad {
exports org.jcnc.jnotepad.view.manager;
exports org.jcnc.jnotepad.constants;
exports org.jcnc.jnotepad.ui;
exports org.jcnc.jnotepad.exception;
}

View File

@ -4,6 +4,7 @@ import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Tab;
import javafx.stage.FileChooser;
import org.jcnc.jnotepad.tool.LogUtil;
import org.jcnc.jnotepad.ui.LineNumberTextArea;
import org.jcnc.jnotepad.view.manager.ViewManager;
@ -49,7 +50,7 @@ public class SaveAsFile implements EventHandler<ActionEvent> {
selectedTab.setText(file.getName()); // 更新Tab页标签上的文件名
selectedTab.setUserData(file); // 将文件对象保存到Tab页的UserData中
} catch (IOException ignored) {
System.out.println("已忽视IO异常!");
LogUtil.info("已忽略IO异常!",this.getClass());
}
}
}

View File

@ -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.SaveAsFile;
import org.jcnc.jnotepad.tool.EncodingDetector;
import org.jcnc.jnotepad.tool.LogUtil;
import org.jcnc.jnotepad.ui.LineNumberTextArea;
import org.jcnc.jnotepad.view.manager.ViewManager;
@ -107,9 +108,9 @@ public class Controller implements ControllerInterface {
if (file != null) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
writer.write(newValue);
System.out.println("正在自动保存---");
LogUtil.info("正在自动保存---",this.getClass());
} catch (IOException ignored) {
System.out.println("已忽视IO异常!");
LogUtil.info("已忽略IO异常!",this.getClass());
}
}
}
@ -184,7 +185,7 @@ public class Controller implements ControllerInterface {
autoSave(textArea);
});
} catch (IOException ignored) {
System.out.println("已忽视IO异常!");
LogUtil.info("已忽略IO异常!",this.getClass());
}
}

View File

@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCombination;
import org.jcnc.jnotepad.Interface.ShortcutKeyInterface;
import org.jcnc.jnotepad.tool.LogUtil;
import org.jcnc.jnotepad.view.manager.ViewManager;
import java.io.*;
@ -33,7 +34,7 @@ public class ShortcutKey implements ShortcutKeyInterface {
jsonData.append(line);
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.error(e.getMessage(),e,this.getClass());
}
} else {
// todo new InputStreamReader(inputStream) 实参 'inputStream' 可能为null
@ -43,7 +44,7 @@ public class ShortcutKey implements ShortcutKeyInterface {
jsonData.append(line);
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.error(e.getMessage(),e,this.getClass());
}
}

View 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());
}
}

View File

@ -36,7 +36,7 @@ public class EncodingDetector {
// 尝试常见的编码
for (Charset charset : commonCharsets()) {
if (isValidEncoding(text, charset)) {
System.out.println("编码监测结果:" + isValidEncoding(text, charset));
LogUtil.info("编码监测结果:" + isValidEncoding(text, charset), EncodingDetector.class);
return charset.name();
}
}

View File

@ -30,7 +30,7 @@ public class FileUtil {
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
LogUtil.error(e.getMessage(),e,FileUtil.class);
return null;
}
}

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

View File

@ -5,6 +5,7 @@ import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import org.jcnc.jnotepad.exception.AppException;
import java.util.HashMap;
import java.util.Map;
@ -25,9 +26,7 @@ public class ViewManager {
private int tabIndex = 0;
private Boolean line = true;
/// 菜单栏组件
/**
* 菜单栏
*/
@ -177,7 +176,7 @@ public class ViewManager {
if (instance != null) {
return instance;
} else {
throw new RuntimeException("ViewManager的实例未初始化!");
throw new AppException("ViewManager实例未初始化!");
}
}
@ -189,7 +188,6 @@ public class ViewManager {
private ViewManager(Scene scene) {
root = new BorderPane();
scene.setRoot(root);
}
/**