代码提交
This commit is contained in:
@@ -15,18 +15,52 @@ spring:
|
||||
multipart:
|
||||
max-file-size: 1024MB
|
||||
max-request-size: 10240MB
|
||||
threads:
|
||||
virtual:
|
||||
enabled: true
|
||||
|
||||
somkit:
|
||||
upload:
|
||||
path:
|
||||
windows: D://data/install/upload
|
||||
linux: /mnt/files
|
||||
db:
|
||||
rocks:
|
||||
path:
|
||||
windows: D://RocksDB//fmt
|
||||
linux: /usr/local/rocksdb/fmt
|
||||
column-family: default
|
||||
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
||||
config: classpath:logback-spring.xml
|
||||
|
||||
metona:
|
||||
cache:
|
||||
# 缓存类型,支持以下类型:
|
||||
# - CONCURRENT_HASH_MAP: 基于 ConcurrentHashMap 的线程安全缓存
|
||||
# - WEAK_HASH_MAP: 基于 WeakHashMap 的弱引用缓存
|
||||
# - LINKED_HASH_MAP: 基于 LinkedHashMap 的 LRU 缓存
|
||||
type: LINKED_HASH_MAP
|
||||
|
||||
# 缓存的初始容量,默认值为 16
|
||||
initial-capacity: 128
|
||||
|
||||
# 缓存的最大容量,当缓存条目数超过该值时,会根据策略移除旧条目
|
||||
# 仅对 LINKED_HASH_MAP 类型有效
|
||||
maximum-size: 2000
|
||||
|
||||
# 写入后过期时间(单位由 time-unit 指定)
|
||||
# 默认值为 -1,表示永不过期
|
||||
expire-after-write: -1
|
||||
|
||||
# 访问后过期时间(单位由 time-unit 指定)
|
||||
# 默认值为 -1,表示永不过期
|
||||
expire-after-access: -1
|
||||
|
||||
# 时间单位,支持以下值:
|
||||
# - NANOSECONDS: 纳秒
|
||||
# - MICROSECONDS: 微秒
|
||||
# - MILLISECONDS: 毫秒(默认)
|
||||
# - SECONDS: 秒
|
||||
# - MINUTES: 分钟
|
||||
# - HOURS: 小时
|
||||
# - DAYS: 天
|
||||
time-unit: MILLISECONDS
|
||||
|
||||
# 是否记录缓存统计信息(如命中率、加载次数等)
|
||||
# 默认值为 false
|
||||
record-stats: true
|
||||
@@ -9,7 +9,7 @@
|
||||
<level>DEBUG</level>
|
||||
</filter>
|
||||
<filter class="cn.somkit.fmt.filter.LogStashFilter">
|
||||
|
||||
<level>DEBUG</level>
|
||||
</filter>
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
|
||||
@@ -40,6 +40,12 @@ class LogMonitorAdaptive {
|
||||
enableFontSize: true, // 是否提供“字体大小 +/-”按钮
|
||||
enableWordWrap: true, // 是否提供“换行/不换行”切换按钮
|
||||
|
||||
/* --- 暂停/继续 的回调函数 --- */
|
||||
onTogglePause: () => {},
|
||||
|
||||
/* --- 创建完成 的回调函数 --- */
|
||||
onCreated: () => {},
|
||||
|
||||
...opts
|
||||
};
|
||||
|
||||
@@ -59,6 +65,11 @@ class LogMonitorAdaptive {
|
||||
this.initDOM();
|
||||
this.bindResize();
|
||||
this.bindGlobalEvents();
|
||||
|
||||
//执行回调函数
|
||||
if(this.cfg.onCreated && typeof this.cfg.onCreated === 'function'){
|
||||
this.cfg.onCreated();
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------ 初始化 ------------------------ */
|
||||
@@ -332,6 +343,10 @@ class LogMonitorAdaptive {
|
||||
this.pauseBtn.style.backgroundColor = this.isPaused
|
||||
? (this.cfg.theme === 'dark' ? '#d32f2f' : '#ff5252')
|
||||
: (this.cfg.theme === 'dark' ? '#444' : '#e7e7e7');
|
||||
//执行回调函数
|
||||
if(this.cfg.onTogglePause && typeof this.cfg.onTogglePause === 'function'){
|
||||
this.cfg.onTogglePause(this.isPaused);
|
||||
}
|
||||
}
|
||||
|
||||
toggleTheme() {
|
||||
|
||||
@@ -15,9 +15,8 @@
|
||||
<body>
|
||||
<!-- 日志容器 -->
|
||||
<div id="logContainer"></div>
|
||||
<script th:src="@{/common/js/basic.js}" type="text/javascript" charset="utf-8"></script>
|
||||
<script th:src="@{/common/js/LogMonitorAdaptive.js}" type="text/javascript" charset="utf-8"></script>
|
||||
<script th:src="@{/common/js/sockjs.js}" type="text/javascript" charset="utf-8"></script>
|
||||
<script th:src="@{/common/js/stomp.js}" type="text/javascript" charset="utf-8"></script>
|
||||
<script type="text/javascript" th:inline="javascript" charset="utf-8">
|
||||
window.onload = () => {
|
||||
const logger = new LogMonitorAdaptive('#logContainer', {
|
||||
@@ -35,16 +34,24 @@
|
||||
enableWordWrap: true,
|
||||
showTimestamp: true, // 是否显示时间戳
|
||||
showLevel: true, // 是否显示日志级别标签
|
||||
});
|
||||
|
||||
const socket = new SockJS('/fmt/ws-logs');
|
||||
const stomp = Stomp.over(socket);
|
||||
stomp.connect({}, () => {
|
||||
stomp.subscribe('/topic/logs', (payload) => {
|
||||
const log = JSON.parse(payload.body);
|
||||
console.log(log);
|
||||
logger.log(log.message, log.level);
|
||||
});
|
||||
//暂停/继续 回调函数
|
||||
onTogglePause: (isPaused) => {
|
||||
console.log(isPaused ? '暂停' : '继续');
|
||||
},
|
||||
onCreated: () => {
|
||||
console.log('日志容器已创建');
|
||||
let index = setInterval(() => {
|
||||
const options = {
|
||||
url: Fmt.ctx() + '/logging/get',
|
||||
data: {},
|
||||
method: 'post'
|
||||
};
|
||||
Fmt.axios(options).then((result) => {
|
||||
console.log(result);
|
||||
logger.log(result.message, result.level);
|
||||
}).catch((err) => clearInterval(index));
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<span class="ax-line"></span>
|
||||
</div>
|
||||
<div class="ax-item">
|
||||
<a th:href="@{/logging/index}" class="ax-text">在线日志</a>
|
||||
<a th:href="@{/logging/index}" target="_blank" class="ax-text">在线日志</a>
|
||||
<span class="ax-line"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user