api report logsDetail
This commit is contained in:
parent
25323e8b67
commit
9d1b43561a
1 changed files with 69 additions and 1 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import { Body, Controller, Get, Post, Query, Route, Security, Tags, Response } from "tsoa";
|
import { Body, Controller, Get, Post, Query, Route, Security, Tags, Res, TsoaResponse } from "tsoa";
|
||||||
import { Client as ElasticsearchClient } from "@elastic/elasticsearch";
|
import { Client as ElasticsearchClient } from "@elastic/elasticsearch";
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
|
|
@ -243,4 +243,72 @@ export class ReportController extends Controller {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Post("logsDetail")
|
||||||
|
async reportLogsDetail(
|
||||||
|
@Res() downloadFile: TsoaResponse<200, object | string | any>,
|
||||||
|
@Query() id: string,
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
const queryData = await elasticsearch.search({
|
||||||
|
index: ELASTICSEARCH_INDEX,
|
||||||
|
query: {
|
||||||
|
bool: {
|
||||||
|
must: [ ...(id ? [{term: {_id: id}} ] : []) ],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
interface DocumentSource {
|
||||||
|
startTimeStamp: Date;
|
||||||
|
userName: string;
|
||||||
|
host: string;
|
||||||
|
endpoint: string;
|
||||||
|
method: string;
|
||||||
|
responseCode: string;
|
||||||
|
logType: string;
|
||||||
|
responseDescription: string;
|
||||||
|
input: string;
|
||||||
|
output: string;
|
||||||
|
sequence: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const content = queryData.hits.hits.map((x) => {
|
||||||
|
const source = x._source as DocumentSource;
|
||||||
|
return {
|
||||||
|
id: x._id,
|
||||||
|
startTimeStamp: source.startTimeStamp,
|
||||||
|
userName: source.userName,
|
||||||
|
host: source.host,
|
||||||
|
endpoint: source.endpoint,
|
||||||
|
method: source.method,
|
||||||
|
responseCode: source.responseCode,
|
||||||
|
logType: source.logType,
|
||||||
|
responseDescription: source.responseDescription,
|
||||||
|
input: source.input,
|
||||||
|
output: source.output,
|
||||||
|
sequence: source.sequence ? source.sequence : [{
|
||||||
|
action:"-",
|
||||||
|
status:"-",
|
||||||
|
description:"-",
|
||||||
|
request:{
|
||||||
|
method:"-",
|
||||||
|
url:"-",
|
||||||
|
response:"-",
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const contentString = JSON.parse(JSON.stringify(content, null, 2));
|
||||||
|
downloadFile(200, contentString, {
|
||||||
|
"Content-Type": "application/octet-stream",
|
||||||
|
"Content-Disposition": `attachment; filename="log_${id}.txt"`,
|
||||||
|
"Content-Length": contentString.length.toString(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (error:any) {
|
||||||
|
console.error("An error occurred:", error);
|
||||||
|
throw new Error("Failed to process logs: " + error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue