java - Antlr4 - 语法解析日志文件

标签 java parsing logging antlr4

我正在尝试解析日志文件条目。

LogGram.g4

grammar LogGram;

logs: log* ;

log : dateformat Identifier '[' className ']' '(' thread ')'
;

thread : Letter+ SPECIAL* LetterOrDigit+
   ;

className : Identifier ('.' Identifier)* ;

dateformat : DATE TMSTAMP ;    

Identifier : Letter LetterOrDigit* ;

Letter : [a-zA-Z$_] ;

LetterOrDigit : [a-zA-Z0-9$_];

SPECIAL : [-@#,;:'"/] ;

DATE : DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ;

TMSTAMP : DIGIT DIGIT ':' DIGIT DIGIT ':' DIGIT DIGIT ',' DIGIT DIGIT DIGIT         
 ;

DIGIT : [0-9] ;

WS : [ \t\r\n\u000C]+ -> skip;

服务器.log

2017-08-10 12:50:56,081 ERROR [io.undertow.request] (default task-32)

解析和打印时的控制台输出

line 1:53 mismatched input 'default' expecting Letter
2017-08-10 12:50:56,081 ERROR [io.undertow.request] (defaulttask-32) 

为什么打印输出前会出现不匹配线?

最佳答案

我不是antlr专家。只是一个想法

SPECIAL : [-@#,;:'"/] ;

使用- char用于定义范围 你可以尝试其他方法吗

HYPHEN : '-';
SPECIAL : [@#,;:'"/] | HYPHEN ;

关于java - Antlr4 - 语法解析日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45615962/

相关文章:

math - 数学解析器的智能设计?

angular - 如何使用rxjs运算符多次获取最新值

java - url连接问题

java - 从输入流中解析 multipart/form-data 的库和示例

java - jsp 未以正确格式传递 UTF-8 数据

java - JFlex 中可以继承吗?

java - Java Web 应用程序的高级日志记录

c# - 使 NLog 配置文件用户在运行时定义

android - 库的 java.lang.NoClassDefFoundError 异常

java - 在 Jaspersoft 中处理复杂类型(列表和对象)的正确方法是什么?