| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import * as monaco from 'monaco-editor'
- export const LOG_LANGUAGE_ID = 'log'
- export function registerLogLanguage() {
- monaco.languages.register({ id: LOG_LANGUAGE_ID })
- monaco.languages.setMonarchTokensProvider(LOG_LANGUAGE_ID, {
- tokenizer: {
- root: [
- // 时间戳
- [/\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?/, 'log.timestamp'],
- // level
- [/\b(\[INFO\]|\[Info\]|\[info\]|\[I\])\b/, 'log.info'],
- [/\b(\[WARN\]|\[Warn\]|\[warn\]|\[WARNING\]|\[W\])\b/, 'log.warn'],
- [/\b(\[ERROR\]|\[Error\]|\[error\]|\[E\])\b/, 'log.error'],
- [/\b(\[DEBUG\]|\[Debug\]|\[debug\]|\[D\])\b/, 'log.debug'],
- // 数字
- [/\b\d+\b/, 'number'],
- // 路径
- [/(\/[a-zA-Z0-9._-]+)+/, 'string']
- ]
- }
- })
- // 悬浮提示(可选)
- monaco.languages.registerHoverProvider(LOG_LANGUAGE_ID, {
- provideHover(model, position) {
- const word = model.getWordAtPosition(position)
- if (!word) return null
- if (word.word.toUpperCase() === 'ERROR') {
- return {
- contents: [{ value: '**ERROR** 日志级别' }]
- }
- }
- return null
- }
- })
- }
|