Skip to content

Commit bfa59ab

Browse files
committed
实现SLF4J:不在使用logback
1 parent bbb291e commit bfa59ab

File tree

21 files changed

+1109
-175
lines changed

21 files changed

+1109
-175
lines changed

pom.xml

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<javafx.version>11.0.2</javafx.version>
4242
<!-- 依赖 -->
4343
<h2.version>1.4.200</h2.version>
44-
<logback.version>1.3.0-alpha4</logback.version>
44+
<slf4j.version>1.7.30</slf4j.version>
4545
<!-- JUnit -->
4646
<junit.version>5.6.2</junit.version>
4747
<!-- Maven插件 -->
@@ -180,16 +180,6 @@
180180
<exclude>profiles/**</exclude>
181181
</excludes>
182182
</resource>
183-
<resource>
184-
<directory>../</directory>
185-
<filtering>false</filtering>
186-
<targetPath>META-INF/</targetPath>
187-
<!-- 开源协议、README -->
188-
<includes>
189-
<include>LICENSE</include>
190-
<include>README.md</include>
191-
</includes>
192-
</resource>
193183
</resources>
194184
</configuration>
195185
<executions>
@@ -212,6 +202,16 @@
212202
<directory>src/main/resources/profiles/${package.environment}</directory>
213203
<filtering>false</filtering>
214204
</resource>
205+
<!-- 开源协议、README -->
206+
<resource>
207+
<directory>../</directory>
208+
<filtering>false</filtering>
209+
<targetPath>META-INF/</targetPath>
210+
<includes>
211+
<include>LICENSE</include>
212+
<include>README.md</include>
213+
</includes>
214+
</resource>
215215
</resources>
216216
</configuration>
217217
</execution>
@@ -324,7 +324,7 @@
324324
<plugin>
325325
<groupId>org.apache.maven.plugins</groupId>
326326
<artifactId>maven-dependency-plugin</artifactId>
327-
<version>${maven.dependency.version}</version><!--$NO-MVN-MAN-VER$-->
327+
<version>${maven.dependency.version}</version>
328328
<configuration>
329329
<stripVersion>false</stripVersion>
330330
<includeScope>compile</includeScope>
@@ -396,13 +396,12 @@
396396
<version>${h2.version}</version>
397397
</dependency>
398398
<!--
399-
日志:logback
400-
隐式依赖:slf4j-api、logback-core
399+
日志:slf4j
401400
-->
402401
<dependency>
403-
<groupId>ch.qos.logback</groupId>
404-
<artifactId>logback-classic</artifactId>
405-
<version>${logback.version}</version>
402+
<groupId>org.slf4j</groupId>
403+
<artifactId>slf4j-api</artifactId>
404+
<version>${slf4j.version}</version>
406405
</dependency>
407406
<!--
408407
GUI:JavaFX

snail-javafx/src/test/java/com/acgist/snail/gui/javafx/BaseTest.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010

1111
import com.acgist.snail.utils.ThreadUtils;
1212

13-
import ch.qos.logback.classic.Level;
14-
import ch.qos.logback.classic.LoggerContext;
15-
1613
public class BaseTest {
1714

1815
protected Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@@ -22,16 +19,6 @@ public class BaseTest {
2219
*/
2320
protected AtomicLong cos = new AtomicLong();
2421

25-
/**
26-
* <p>设置日志级别:INFO</p>
27-
*/
28-
protected void info() {
29-
final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
30-
context.getLoggerList().forEach(logger -> {
31-
logger.setLevel(Level.INFO);
32-
});
33-
}
34-
3522
/**
3623
* <p>阻止自动关闭</p>
3724
*/

snail/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
<artifactId>h2</artifactId>
2222
</dependency>
2323
<dependency>
24-
<groupId>ch.qos.logback</groupId>
25-
<artifactId>logback-classic</artifactId>
24+
<groupId>org.slf4j</groupId>
25+
<artifactId>slf4j-api</artifactId>
2626
</dependency>
2727
</dependencies>
2828

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package com.acgist.snail.context;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.Map;
6+
import java.util.concurrent.ConcurrentHashMap;
7+
8+
import org.slf4j.ILoggerFactory;
9+
import org.slf4j.event.Level;
10+
11+
import com.acgist.snail.logger.Logger;
12+
import com.acgist.snail.logger.LoggerAdapter;
13+
import com.acgist.snail.logger.LoggerConfig;
14+
import com.acgist.snail.logger.adapter.ConsoleLoggerAdapter;
15+
import com.acgist.snail.logger.adapter.FileLoggerAdapter;
16+
17+
/**
18+
* <p>日志上下文</p>
19+
*
20+
* @author acgist
21+
*/
22+
public final class LoggerContext implements ILoggerFactory {
23+
24+
private static final LoggerContext INSTANCE = new LoggerContext();
25+
26+
public static final LoggerContext getInstance() {
27+
return INSTANCE;
28+
}
29+
30+
/**
31+
* <p>日志对象</p>
32+
*/
33+
private final Map<String, Logger> loggers;
34+
/**
35+
* <p>日志适配器</p>
36+
*/
37+
private final List<LoggerAdapter> adapters;
38+
39+
private LoggerContext() {
40+
this.loggers = new ConcurrentHashMap<String, Logger>();
41+
final String adapter = LoggerConfig.getAdapter();
42+
final List<LoggerAdapter> list = new ArrayList<LoggerAdapter>();
43+
if(adapter != null && !adapter.isEmpty()) {
44+
final String[] adapters = adapter.split(",");
45+
for (String value : adapters) {
46+
value = value.trim();
47+
if(FileLoggerAdapter.ADAPTER.equalsIgnoreCase(value)) {
48+
list.add(new FileLoggerAdapter());
49+
} else if(ConsoleLoggerAdapter.ADAPTER.equalsIgnoreCase(value)) {
50+
list.add(new ConsoleLoggerAdapter());
51+
}
52+
}
53+
}
54+
this.adapters = list;
55+
}
56+
57+
/**
58+
* <p>获取日志上下文名称</p>
59+
*
60+
* @return 日志上下文名称
61+
*/
62+
public String getName() {
63+
return this.getClass().getName();
64+
}
65+
66+
@Override
67+
public org.slf4j.Logger getLogger(String name) {
68+
Logger logger = this.loggers.get(name);
69+
if(logger != null) {
70+
return logger;
71+
}
72+
logger = new Logger(name);
73+
this.loggers.put(name, logger);
74+
return logger;
75+
}
76+
77+
/**
78+
* <p>日志输出</p>
79+
*
80+
* @param level 级别
81+
* @param message 日志
82+
*/
83+
public void output(Level level, String message) {
84+
final boolean error = level.toInt() >= Level.ERROR.toInt();
85+
for (LoggerAdapter adapter : this.adapters) {
86+
if(error) {
87+
adapter.errorOutput(message);
88+
} else {
89+
adapter.output(message);
90+
}
91+
}
92+
}
93+
94+
/**
95+
* <p>关闭日志</p>
96+
*/
97+
public static final void shutdown() {
98+
INSTANCE.adapters.forEach(adapter -> adapter.release());
99+
}
100+
101+
}

snail/src/main/java/com/acgist/snail/context/SystemContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import com.acgist.snail.net.torrent.utp.bootstrap.UtpRequestQueue;
3636
import com.acgist.snail.repository.DatabaseManager;
3737
import com.acgist.snail.utils.FileUtils;
38-
import com.acgist.snail.utils.LoggerUtils;
3938
import com.acgist.snail.utils.NetUtils;
4039

4140
/**
@@ -203,7 +202,7 @@ public static final void shutdown() {
203202
GuiManager.getInstance().exit();
204203
SystemThreadContext.shutdown();
205204
LOGGER.info("系统已关闭");
206-
LoggerUtils.shutdown(); // 最后关闭日志
205+
LoggerContext.shutdown();
207206
});
208207
} else {
209208
GuiManager.getInstance().alert("关闭提示", "系统正在关闭中...");

0 commit comments

Comments
 (0)