From c6b8ae46ecf93be3786161f0bcb37dd2aae20e3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Lalev=C3=A9e?= <nicolas.lalevee@hibnet.org> Date: Wed, 20 Apr 2016 14:05:09 +0200 Subject: [PATCH 1/2] only build the log message is necessary --- .../joestelmach/natty/generated/DateLexer.g | 8 +++++--- .../joestelmach/natty/generated/DateParser.g | 8 +++++--- .../com/joestelmach/natty/IcsSearcher.java | 6 +++--- .../java/com/joestelmach/natty/Parser.java | 18 ++++++++++-------- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g b/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g index 5f85fa30..ae3c389f 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g @@ -8,9 +8,11 @@ lexer grammar DateLexer; @Override public void displayRecognitionError(String[] tokenNames, RecognitionException re) { - String message = getErrorHeader(re); - try { message += getErrorMessage(re, tokenNames); } catch(Exception e) {} - _logger.debug(message); + if (_logger.isDebugEnabled()) { + String message = getErrorHeader(re); + try { message += getErrorMessage(re, tokenNames); } catch(Exception e) {} + _logger.debug(message); + } } } diff --git a/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g b/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g index d3c99128..30b35810 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g @@ -46,9 +46,11 @@ tokens { @Override public void displayRecognitionError(String[] tokenNames, RecognitionException re) { - String message = getErrorHeader(re); - try { message += getErrorMessage(re, tokenNames); } catch(Exception e) {} - _logger.debug(message); + if (_logger.isDebugEnabled()) { + String message = getErrorHeader(re); + try { message += getErrorMessage(re, tokenNames); } catch(Exception e) {} + _logger.debug(message); + } } } diff --git a/src/main/java/com/joestelmach/natty/IcsSearcher.java b/src/main/java/com/joestelmach/natty/IcsSearcher.java index ddf058d3..5ec7985d 100644 --- a/src/main/java/com/joestelmach/natty/IcsSearcher.java +++ b/src/main/java/com/joestelmach/natty/IcsSearcher.java @@ -43,11 +43,11 @@ public Map<Integer, Date> findDates(int startYear, int endYear, String eventSumm _holidayCalendar = new CalendarBuilder().build(fin); } catch (IOException e) { - _logger.error("Couln't open " + _calendarFileName); + _logger.error("Couln't open {}", _calendarFileName); return holidays; } catch (ParserException e) { - _logger.error("Couln't parse " + _calendarFileName); + _logger.error("Couln't parse {}", _calendarFileName); return holidays; } } @@ -59,7 +59,7 @@ public Map<Integer, Date> findDates(int startYear, int endYear, String eventSumm period = new Period(from, to); } catch (ParseException e) { - _logger.error("Invalid start or end year: " + startYear + ", " + endYear, e); + _logger.error("Invalid start or end year: {}, {}", startYear, endYear, e); return holidays; } diff --git a/src/main/java/com/joestelmach/natty/Parser.java b/src/main/java/com/joestelmach/natty/Parser.java index 9a0f666f..8bb41bca 100644 --- a/src/main/java/com/joestelmach/natty/Parser.java +++ b/src/main/java/com/joestelmach/natty/Parser.java @@ -204,7 +204,7 @@ private DateGroup singleParse(TokenStream stream, String fullText, Date referenc // we only continue if a meaningful syntax tree has been built if(tree.getChildCount() > 0) { - _logger.info("PARSE: " + tokenString.toString()); + _logger.info("PARSE: {}", tokenString.toString()); // rewrite the tree (temporary fix for http://www.antlr.org/jira/browse/ANTLR-427) CommonTreeNodeStream nodes = new CommonTreeNodeStream(tree); @@ -218,7 +218,7 @@ private DateGroup singleParse(TokenStream stream, String fullText, Date referenc walker.setReferenceDate(referenceDate); walker.getState().setDefaultTimeZone(_defaultTimeZone); walker.parse(); - _logger.info("AST: " + tree.toStringTree()); + _logger.info("AST: {}", tree.toStringTree()); // run through the results and append the parse information group = walker.getState().getDateGroup(); @@ -307,16 +307,18 @@ private List<TokenStream> collectTokenStreams(TokenStream stream) { addGroup(currentGroup, groups); } - _logger.info("STREAM: " + tokenString.toString()); + _logger.info("STREAM: {}", tokenString.toString()); List<TokenStream> streams = new ArrayList<TokenStream>(); for(List<Token> group:groups) { if(!group.isEmpty()) { - StringBuilder builder = new StringBuilder(); - builder.append("GROUP: "); - for (Token token : group) { - builder.append(DateParser.tokenNames[token.getType()]).append(" "); + if (_logger.isInfoEnabled()) { + StringBuilder builder = new StringBuilder(); + builder.append("GROUP: "); + for (Token token : group) { + builder.append(DateParser.tokenNames[token.getType()]).append(" "); + } + _logger.info(builder.toString()); } - _logger.info(builder.toString()); streams.add(new CommonTokenStream(new NattyTokenSource(group))); } From 1a1f19619035472095daa3fc1ab3cfcd4a0b61a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Lalev=C3=A9e?= <nicolas.lalevee@hibnet.org> Date: Wed, 20 Apr 2016 15:04:10 +0200 Subject: [PATCH 2/2] redirect error messages to a proper logger --- .../joestelmach/natty/generated/DateLexer.g | 5 +++++ .../joestelmach/natty/generated/DateParser.g | 12 ++++++++++++ .../joestelmach/natty/generated/DateWalker.g | 8 ++++++++ .../joestelmach/natty/generated/TreeRewrite.g | 8 ++++++++ .../natty/generated/imports/NumericRules.g | 18 +++++++++++++++++- 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g b/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g index ae3c389f..3939733d 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/DateLexer.g @@ -14,6 +14,11 @@ lexer grammar DateLexer; _logger.debug(message); } } + + @Override + public void emitErrorMessage(String msg) { + _logger.error(msg); + } } // ********** date rules ********** diff --git a/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g b/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g index 30b35810..54d1b5d3 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/DateParser.g @@ -38,6 +38,8 @@ tokens { @header { package com.joestelmach.natty.generated; + + import java.io.IOException; } @members { @@ -52,6 +54,16 @@ tokens { _logger.debug(message); } } + + @Override + public void reportError(IOException e) { + _logger.error("Unexpected IO error", e); + } + + @Override + public void emitErrorMessage(String msg) { + _logger.error(msg); + } } parse diff --git a/src/main/antlr3/com/joestelmach/natty/generated/DateWalker.g b/src/main/antlr3/com/joestelmach/natty/generated/DateWalker.g index 8d87db3b..6f8eacdf 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/DateWalker.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/DateWalker.g @@ -8,6 +8,9 @@ options { @header { package com.joestelmach.natty.generated; } @members { + private static org.slf4j.Logger _logger = + org.slf4j.LoggerFactory.getLogger(com.joestelmach.natty.generated.DateWalker.class); + private com.joestelmach.natty.WalkerState _walkerState; private java.util.Date referenceDate; @@ -23,6 +26,11 @@ options { throw e; } + @Override + public void emitErrorMessage(String msg) { + _logger.error(msg); + } + public void setReferenceDate(java.util.Date referenceDate) { this.referenceDate = referenceDate; } diff --git a/src/main/antlr3/com/joestelmach/natty/generated/TreeRewrite.g b/src/main/antlr3/com/joestelmach/natty/generated/TreeRewrite.g index 4ca30869..4a9d89a5 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/TreeRewrite.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/TreeRewrite.g @@ -10,6 +10,9 @@ options { @header { package com.joestelmach.natty.generated; } @members { + private static org.slf4j.Logger _logger = + org.slf4j.LoggerFactory.getLogger(com.joestelmach.natty.generated.TreeRewrite.class); + @Override protected Object recoverFromMismatchedToken(IntStream input, int ttype, BitSet follow) throws RecognitionException { @@ -21,6 +24,11 @@ options { throws RecognitionException { throw e; } + + @Override + public void emitErrorMessage(String msg) { + _logger.error(msg); + } } @rulecatch { diff --git a/src/main/antlr3/com/joestelmach/natty/generated/imports/NumericRules.g b/src/main/antlr3/com/joestelmach/natty/generated/imports/NumericRules.g index b23d78c7..3e0cf882 100644 --- a/src/main/antlr3/com/joestelmach/natty/generated/imports/NumericRules.g +++ b/src/main/antlr3/com/joestelmach/natty/generated/imports/NumericRules.g @@ -7,7 +7,23 @@ options { tokens { INT; } - + +@members { + private static org.slf4j.Logger _logger = + org.slf4j.LoggerFactory.getLogger(com.joestelmach.natty.generated.DateParser_NumericRules.class); + + @Override + public void reportError(IOException e) { + _logger.error("Unexpected IO error", e); + } + + @Override + public void emitErrorMessage(String msg) { + _logger.error(msg); + } +} + + // ********** numeric rules ********** // a number between 00 and 59 inclusive, with a mandatory 0 prefix before numbers 0-9