@ fishka/ 日志
在TypeScript中用于结构化日志的 Console.log 转换管.
安装
npm install @fishka/logs
快速启动
import {createJsonStringifyPipe, installConsoleOverride} from '@fishka/logs';
// Install JSON stringify pipe
installConsoleOverride(createJsonStringifyPipe());
// Now all console logs are JSON formatted
console.log('User logged in', {userId: 123, action: 'login'});
// Output: {"message":"User logged in $1","$1":{"userId":123,"action":"login"},"level":"log","timestamp":"2026-02-15T04:30:00.000Z","message_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}
管道
JsonStringify Pipe (英语)
将控制台参数转换为 JSON 字符串 :
import {createJsonStringifyPipe, installConsoleOverride} from '@fishka/logs';
installConsoleOverride(createJsonStringifyPipe());
console.log('Hello', {data: 'value'});
// {"message":"Hello $1","$1":{"data":"value"},"level":"log","timestamp":"...","message_id":"..."}
贾森皮普
将控制台参数转换为 JSON 对象( 不字符串) :
import {createJsonPipe, installConsoleOverride} from '@fishka/logs';
const pipe = createJsonPipe();
installConsoleOverride(pipe);
// Access last message ID
console.log('Test');
console.log(pipe.getLastMessageId()); // "a1b2c3d4-..."
// Set next message ID
pipe.setNextMessageId('custom-id-123');
console.log('Test'); // Uses "custom-id-123" as message_id
日志级别FilterPipe
按级别过滤日志 :
import {createLogLevelFilterPipe, installConsoleOverride} from '@fishka/logs';
// Exclude debug and trace logs
installConsoleOverride(createLogLevelFilterPipe({
excludedLogLevels: ['debug', 'trace']
}));
console.debug('This will not appear');
console.log('This will appear');
日志编辑器Pipe
按信件内容过滤日志 :
import {createLogMessageFilterPipe, installConsoleOverride} from '@fishka/logs';
// Exclude messages containing "password"
installConsoleOverride(createLogMessageFilterPipe({
excludedMessagePatterns: [/password/i]
}));
console.log('User password: secret123'); // Filtered out
console.log('User login: john'); // Allowed
日志卡切Pipe
缓存最近日志 :
import {createLogCachePipe, installConsoleOverride} from '@fishka/logs';
const cachePipe = createLogCachePipe({maxCacheSize: 100});
installConsoleOverride(cachePipe);
console.log('Message 1');
console.log('Message 2');
// Access cached logs
console.log(cachePipe.getLogCache()); // Array of recent logs
日期时间
在日志中添加时间戳 :
import {createDateTimePipe, installConsoleOverride} from '@fishka/logs';
installConsoleOverride(createDateTimePipe());
console.log('Event');
// [2026-02-15T04:30:00.000Z] Event
组合管道
安装多管的顺序 :
import {
createLogLevelFilterPipe,
createJsonStringifyPipe,
installConsoleOverrides
} from '@fishka/logs';
installConsoleOverrides(
createLogLevelFilterPipe({excludedLogLevels: ['debug']}),
createJsonStringifyPipe()
);
未安装管道
import {uninstallConsoleOverride, uninstallAllConsoleOverrides} from '@fishka/logs';
// Remove specific pipe
uninstallConsoleOverride(pipe);
// Remove all pipes
uninstallAllConsoleOverrides();
自定义管道
创建您的管道 :
import {LogPipe, installConsoleOverride} from '@fishka/logs';
const myPipe: LogPipe = (level, ...args) => {
// Transform arguments
return args.map(arg => typeof arg === 'string' ? arg.toUpperCase() : arg);
};
installConsoleOverride(myPipe);
console.log('hello'); // HELLO
通过返回空数组来压制日志 :
const suppressPipe: LogPipe = () => [];
通过返回对象更改日志级别 :
const upgradePipe: LogPipe = (level, ...args) => ({
level: 'error', // Upgrade all logs to error
args
});
许可证
阿帕奇 - 2.0