修复日志获取

This commit is contained in:
whyour 2022-05-24 10:00:42 +08:00
parent af74afd10d
commit 76b6677f5a
4 changed files with 36 additions and 85 deletions

View File

@ -3,7 +3,8 @@ import { Container } from 'typedi';
import { Logger } from 'winston';
import * as fs from 'fs';
import config from '../config';
import { getFileContentByName } from '../config/util';
import { getFileContentByName, readDirs } from '../config/util';
import { join } from 'path';
const route = Router();
export default (app: Router) => {
@ -12,59 +13,28 @@ export default (app: Router) => {
route.get('/', async (req: Request, res: Response, next: NextFunction) => {
const logger: Logger = Container.get('logger');
try {
const fileList = fs.readdirSync(config.logPath, 'utf-8');
const dirs = [];
for (let i = 0; i < fileList.length; i++) {
const stat = fs.lstatSync(config.logPath + fileList[i]);
if (stat.isDirectory()) {
const fileListTmp = fs.readdirSync(
`${config.logPath}/${fileList[i]}`,
'utf-8',
);
dirs.push({
name: fileList[i],
isDir: true,
files: fileListTmp.reverse(),
const result = readDirs(config.logPath, config.logPath);
res.send({
code: 200,
data: result,
});
} else {
dirs.push({
name: fileList[i],
isDir: false,
files: [],
});
}
}
res.send({ code: 200, dirs });
} catch (e) {
logger.error('🔥 error: %o', e);
return next(e);
}
});
route.get(
'/:dir/:file',
async (req: Request, res: Response, next: NextFunction) => {
const logger: Logger = Container.get('logger');
try {
const { dir, file } = req.params;
const content = getFileContentByName(
`${config.logPath}/${dir}/${file}`,
);
res.send({ code: 200, data: content });
} catch (e) {
logger.error('🔥 error: %o', e);
return next(e);
}
},
);
route.get(
'/:file',
async (req: Request, res: Response, next: NextFunction) => {
const logger: Logger = Container.get('logger');
try {
const { file } = req.params;
const content = getFileContentByName(`${config.logPath}/${file}`);
const filePath = join(
config.logPath,
req.query.path as string,
req.params.file,
);
const content = getFileContentByName(filePath);
res.send({ code: 200, data: content });
} catch (e) {
logger.error('🔥 error: %o', e);

View File

@ -17,9 +17,7 @@ const route = Router();
export default (app: Router) => {
app.use('/scripts', route);
route.get(
'/files',
async (req: Request, res: Response, next: NextFunction) => {
route.get('/', async (req: Request, res: Response, next: NextFunction) => {
const logger: Logger = Container.get('logger');
try {
const result = readDirs(config.scriptPath, config.scriptPath);
@ -31,8 +29,7 @@ export default (app: Router) => {
logger.error('🔥 error: %o', e);
return next(e);
}
},
);
});
route.get(
'/:file',

View File

@ -52,32 +52,16 @@ const Log = ({ headerStyle, isPhone, theme }: any) => {
request
.get(`${config.apiPrefix}logs`)
.then((data) => {
const result = formatData(data.dirs) as any;
setData(result);
setFilterData(result);
setData(data.data);
setFilterData(data.data);
})
.finally(() => setLoading(false));
};
const formatData = (tree: any[]) => {
return tree.map((x) => {
x.title = x.name;
x.value = x.name;
x.disabled = x.isDir;
x.key = x.name;
x.children = x.files.map((y: string) => ({
title: y,
value: `${x.name}/${y}`,
key: `${x.name}/${y}`,
parent: x.name,
isLeaf: true,
}));
return x;
});
};
const getLog = (node: any) => {
request.get(`${config.apiPrefix}logs/${node.value}`).then((data) => {
request
.get(`${config.apiPrefix}logs/${node.value}?path=${node.parent || ''}`)
.then((data) => {
setValue(data.data);
});
};
@ -88,7 +72,7 @@ const Log = ({ headerStyle, isPhone, theme }: any) => {
}
setValue('加载中...');
setSelect(value);
setTitle(node.parent || node.value);
setTitle(node.key);
getLog(node);
};

View File

@ -93,7 +93,7 @@ const Script = ({ headerStyle, isPhone, theme, socketMessage }: any) => {
const getScripts = () => {
setLoading(true);
request
.get(`${config.apiPrefix}scripts/files`)
.get(`${config.apiPrefix}scripts`)
.then((data) => {
setData(data.data);
setFilterData(data.data);
@ -135,7 +135,7 @@ const Script = ({ headerStyle, isPhone, theme, socketMessage }: any) => {
const newMode = value ? LangMap[value.slice(-3)] : '';
setMode(isPhone && newMode === 'typescript' ? 'javascript' : newMode);
setSelect(node.key);
setTitle(node.parent || node.value);
setTitle(node.key);
setCurrentNode(node);
getDetail(node);
};