mirror of
https://github.com/alireza0/x-ui.git
synced 2026-03-14 05:23:09 +00:00
[log view] add refresh,count,download #50
This commit is contained in:
@@ -38,7 +38,7 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) {
|
||||
g.POST("/stopXrayService", a.stopXrayService)
|
||||
g.POST("/restartXrayService", a.restartXrayService)
|
||||
g.POST("/installXray/:version", a.installXray)
|
||||
g.POST("/logs", a.getLogs)
|
||||
g.POST("/logs/:count", a.getLogs)
|
||||
}
|
||||
|
||||
func (a *ServerController) refreshStatus() {
|
||||
@@ -109,7 +109,8 @@ func (a *ServerController) restartXrayService(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (a *ServerController) getLogs(c *gin.Context) {
|
||||
logs, err := a.serverService.GetLogs()
|
||||
count := c.Param("count")
|
||||
logs, err := a.serverService.GetLogs(count)
|
||||
if err != nil {
|
||||
jsonMsg(c, I18n(c, "getLogs"), err)
|
||||
return
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
<a-col :sm="24" :md="12">
|
||||
<a-card hoverable :class="siderDrawer.isDarkTheme ? darkClass : ''">
|
||||
x-ui: <a-tag color="green">{{ .cur_ver }}</a-tag>
|
||||
<a-tag color="blue" style="cursor: pointer;" @click="openLogs">Logs</a-tag>
|
||||
<a-tag color="blue" style="cursor: pointer;" @click="openLogs(20)">Logs</a-tag>
|
||||
{{ i18n "pages.index.operationHours" }}:
|
||||
<a-tag color="green">[[ formatSecond(status.uptime) ]]</a-tag>
|
||||
<a-tooltip>
|
||||
@@ -194,11 +194,30 @@
|
||||
:class="siderDrawer.isDarkTheme ? darkClass : ''"
|
||||
width="800px"
|
||||
footer="">
|
||||
<table style="margin: 0px; width: 100%; background-color: black; color: hsla(0,0%,100%,.65);">
|
||||
<tr v-for="log , index in logModal.logs">
|
||||
<td style="vertical-align: top;">[[ index ]]</td><td>[[ log ]]</td>
|
||||
</tr>
|
||||
</table>
|
||||
<a-form layout="inline">
|
||||
<a-form-item label="Count">
|
||||
<a-select v-model="logModal.rows"
|
||||
style="width: 80px"
|
||||
@change="openLogs(logModal.rows)"
|
||||
:dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''">
|
||||
<a-select-option value="10">10</a-select-option>
|
||||
<a-select-option value="20">20</a-select-option>
|
||||
<a-select-option value="50">50</a-select-option>
|
||||
<a-select-option value="100">100</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item>
|
||||
<button class="ant-btn ant-btn-primary" @click="openLogs(logModal.rows)"><a-icon type="sync"></a-icon> Reload</button>
|
||||
</a-form-item>
|
||||
<a-form-item>
|
||||
<a-button type="primary" style="margin-bottom: 10px;"
|
||||
:href="'data:application/text;charset=utf-8,' + encodeURIComponent(logModal.logs)" download="x-ui.log">
|
||||
{{ i18n "download" }} x-ui.log
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
<a-input type="textarea" v-model="logModal.logs" disabled="true"
|
||||
:autosize="{ minRows: 10, maxRows: 22}"></a-input>
|
||||
</a-modal>
|
||||
</a-layout>
|
||||
{{template "js" .}}
|
||||
@@ -296,9 +315,11 @@
|
||||
const logModal = {
|
||||
visible: false,
|
||||
logs: '',
|
||||
show(logs) {
|
||||
rows: 20,
|
||||
show(logs, rows) {
|
||||
this.visible = true;
|
||||
this.logs = logs;
|
||||
this.rows = rows;
|
||||
this.logs = logs.join("\n");
|
||||
},
|
||||
hide() {
|
||||
this.visible = false;
|
||||
@@ -372,14 +393,14 @@
|
||||
return;
|
||||
}
|
||||
},
|
||||
async openLogs(){
|
||||
async openLogs(rows){
|
||||
this.loading(true);
|
||||
const msg = await HttpUtil.post('server/logs');
|
||||
const msg = await HttpUtil.post('server/logs/'+rows);
|
||||
this.loading(false);
|
||||
if (!msg.success) {
|
||||
return;
|
||||
}
|
||||
logModal.show(msg.obj);
|
||||
logModal.show(msg.obj,rows);
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
|
||||
@@ -327,11 +327,11 @@ func (s *ServerService) UpdateXray(version string) error {
|
||||
|
||||
}
|
||||
|
||||
func (s *ServerService) GetLogs() ([]string, error) {
|
||||
func (s *ServerService) GetLogs(count string) ([]string, error) {
|
||||
// Define the journalctl command and its arguments
|
||||
var cmdArgs []string
|
||||
if runtime.GOOS == "linux" {
|
||||
cmdArgs = []string{"journalctl", "-u", "x-ui", "--no-pager", "-n", "100"}
|
||||
cmdArgs = []string{"journalctl", "-u", "x-ui", "--no-pager", "-n", count}
|
||||
} else {
|
||||
return []string{"Unsupported operating system"}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user