赞
踩
NodeJS 16 or later
TypeScript 4.9.3 or later
- npm install mysql2 --save
- npm install toml --save
- npm install moment-timezone --save
- npm install @types/moment --save
config.ts
- // config.ts
- import fs from 'fs';
- import toml from 'toml';
-
- // 读取当前文件夹下的 config.toml 配置文件
- let config = toml.parse(fs.readFileSync('config.toml').toString());
-
- export default config;
- // mysql/connection.ts
- import config from "../config";
-
- import mysql from 'mysql2/promise';
-
- let connection: mysql.Connection;
-
- const getConnection = async () => {
- if (!connection) {
- connection = await mysql.createConnection({
- host : config.mysql.host,
- user : config.mysql.user,
- password : config.mysql.password,
- database : config.mysql.database
- });
- }
-
- return connection;
- }
-
- export {
- getConnection
- };
- // metrics/add-client-log.ts
- import moment from "moment-timezone";
- import config from "config";
- import { getConnection } from "../mysql/connection";
-
- export default async function addClientLog(clientId: string, eventKey: string, eventValue: string): Promise<void> {
- const connection = await getConnection();
- const enableLogging = config.runtime.enableLogging ?? false;
-
- if (!enableLogging) {
- return;
- }
-
- const date = moment().tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss');
- await connection.query(
- `INSERT INTO client_log
- VALUES (
- 0,
- "${connection.escape(clientId)}",
- "${connection.escape(eventKey)}",
- "${connection.escape(eventValue)}",
- "${date}"
- )
- `);
- }
-
- // config.ts
- import addClientLog from '../metrics/add-client-log';
-
- // 使用示例
- await addClientLog(123, "initialized", "localhost");
- CREATE TABLE IF NOT EXISTS `client_log` (
- `id` int NOT NULL AUTO_INCREMENT,
- `clientId` varchar(255) DEFAULT NULL,
- `eventKey` varchar(255) DEFAULT NULL,
- `eventValue` text,
- `date` datetime DEFAULT NULL,
- PRIMARY KEY (`id`)
- );
config.toml
environment = "local" ### # Config for the web and websockets servers # The password is for any routes you want to password protect # By default this is only the endpoint that lists active connections for debugging purposes ### [server] httpPort = 8000 websocketPort = 8080 domain = 'localhost' password = 'changeme' # A list of banned IPs bannedIps = [ '999.999.999.999', ] # A list of banned Client IDs bannedClientIds = [ 'df3453rewr349543utff' ] # A list of banned hostnames bannedHostnames = [ 'evil.com' ] ### # MySQL is used for Logging wnen it is enabled ### [mysql] host = 'localhost' user = 'root' password = 'changeme' database = 'test' ### # Enable or disable debug output and logging ### [runtime] debug = true enableLogging = false
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。