diff --git a/pom.xml b/pom.xml index d49aa9e..8053c67 100644 --- a/pom.xml +++ b/pom.xml @@ -140,7 +140,7 @@ 2.10.0 - 2.4.0 + 2.5.0 @@ -170,9 +170,14 @@ 1.3.3 - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + 2.17.1 + + + org.apache.logging.log4j + log4j-core + 2.17.1 org.apache.opennlp diff --git a/src/main/java/org/ohnlp/medtagger/ae/AhoCorasickLookupAnnotator.java b/src/main/java/org/ohnlp/medtagger/ae/AhoCorasickLookupAnnotator.java index e0ce296..71389a5 100644 --- a/src/main/java/org/ohnlp/medtagger/ae/AhoCorasickLookupAnnotator.java +++ b/src/main/java/org/ohnlp/medtagger/ae/AhoCorasickLookupAnnotator.java @@ -1,42 +1,33 @@ /******************************************************************************* - * Copyright: (c) 2013 Mayo Foundation for Medical Education and + * Copyright: (c) 2013 Mayo Foundation for Medical Education and * Research (MFMER). All rights reserved. MAYO, MAYO CLINIC, and the * triple-shield Mayo logo are trademarks and service marks of MFMER. - * - * Except as contained in the copyright notice above, or as used to identify + * + * Except as contained in the copyright notice above, or as used to identify * MFMER as the author of this software, the trade names, trademarks, service * marks, or product names of the copyright holder shall not be used in * advertising, promotion or otherwise in connection with this software without * prior written authorization of the copyright holder. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * See the License for the specific language governing permissions and + * limitations under the License. *******************************************************************************/ package org.ohnlp.medtagger.ae; -import java.io.*; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Vector; - -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.Configurator; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; @@ -44,24 +35,34 @@ import org.apache.uima.jcas.JFSIndexRepository; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; -import org.ohnlp.typesystem.type.textspan.Segment; -import org.ohnlp.typesystem.type.textspan.Sentence; +import org.ohnlp.medtagger.dict.AhoCorasickDict; +import org.ohnlp.medtagger.lvg.LvgLookup; +import org.ohnlp.medtagger.type.ConceptMention; import org.ohnlp.typesystem.type.syntax.BaseToken; import org.ohnlp.typesystem.type.syntax.NumToken; import org.ohnlp.typesystem.type.syntax.PunctuationToken; import org.ohnlp.typesystem.type.syntax.WordToken; -import org.ohnlp.medtagger.dict.AhoCorasickDict; -import org.ohnlp.medtagger.lvg.LvgLookup; -import org.ohnlp.medtagger.type.ConceptMention; +import org.ohnlp.typesystem.type.textspan.Segment; +import org.ohnlp.typesystem.type.textspan.Sentence; + +import java.io.*; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Vector; /** * @author Hongfang Liu */ public class AhoCorasickLookupAnnotator extends JCasAnnotator_ImplBase { - // LOG4J logger based on class name - private Logger logger = Logger.getLogger(getClass().getName()); - private boolean LONGEST = true; + // LOG4J logger based on class name + private Logger logger = LogManager.getLogger(getClass().getName()); + private boolean LONGEST = true; // data structure that stores the TRIE AhoCorasickDict btac; @@ -70,11 +71,11 @@ public class AhoCorasickLookupAnnotator extends JCasAnnotator_ImplBase { // add the path in resources LvgLookup lvg; - @Override - public void initialize(UimaContext aContext) - throws ResourceInitializationException { - super.initialize(aContext); - logger.setLevel(Level.DEBUG); + @Override + public void initialize(UimaContext aContext) + throws ResourceInitializationException { + super.initialize(aContext); + Configurator.setLevel(logger.getName(), Level.DEBUG); try { lvg = new LvgLookup(aContext); diff --git a/src/main/java/org/ohnlp/medtagger/ae/LineSentenceDetector.java b/src/main/java/org/ohnlp/medtagger/ae/LineSentenceDetector.java index e48f416..a887da8 100644 --- a/src/main/java/org/ohnlp/medtagger/ae/LineSentenceDetector.java +++ b/src/main/java/org/ohnlp/medtagger/ae/LineSentenceDetector.java @@ -27,7 +27,8 @@ import java.util.ArrayList; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.jcas.JCas; @@ -42,7 +43,7 @@ public class LineSentenceDetector extends JCasAnnotator_ImplBase { - private Logger logger = Logger.getLogger(getClass().getName()); + private Logger logger = LogManager.getLogger(getClass().getName()); public static final byte CAPS_UNKNOWN = 0; public static final byte CAPS_NONE = 1; diff --git a/src/main/java/org/ohnlp/medtagger/ae/Open2OHTokenizer.java b/src/main/java/org/ohnlp/medtagger/ae/Open2OHTokenizer.java index f6ffead..a7ee91b 100644 --- a/src/main/java/org/ohnlp/medtagger/ae/Open2OHTokenizer.java +++ b/src/main/java/org/ohnlp/medtagger/ae/Open2OHTokenizer.java @@ -27,7 +27,8 @@ import java.util.ArrayList; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.jcas.JCas; @@ -42,7 +43,7 @@ public class Open2OHTokenizer extends JCasAnnotator_ImplBase { - private Logger logger = Logger.getLogger(getClass().getName()); + private Logger logger = LogManager.getLogger(getClass().getName()); public static final byte CAPS_UNKNOWN = 0; public static final byte CAPS_NONE = 1; diff --git a/src/main/java/org/ohnlp/medtagger/dict/AhoCorasickDict.java b/src/main/java/org/ohnlp/medtagger/dict/AhoCorasickDict.java index 59c307b..e8831af 100644 --- a/src/main/java/org/ohnlp/medtagger/dict/AhoCorasickDict.java +++ b/src/main/java/org/ohnlp/medtagger/dict/AhoCorasickDict.java @@ -39,13 +39,14 @@ import java.util.Set; import java.util.Vector; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; public class AhoCorasickDict { // LOG4J logger based on class name - private Logger iv_logger = Logger.getLogger(getClass().getName()); + private Logger iv_logger = LogManager.getLogger(getClass().getName()); public static final String FAILLINK="_FAIL_"; public static final String SLDELIM="||"; diff --git a/src/main/java/org/ohnlp/medtagger/dict/DictWriter.java b/src/main/java/org/ohnlp/medtagger/dict/DictWriter.java index a3ae9f1..bf4aa2c 100644 --- a/src/main/java/org/ohnlp/medtagger/dict/DictWriter.java +++ b/src/main/java/org/ohnlp/medtagger/dict/DictWriter.java @@ -29,10 +29,14 @@ import java.util.HashSet; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.UimaContext; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; -import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.CASException; +import org.apache.uima.collection.CasConsumer_ImplBase; +import org.apache.uima.fit.component.JCasAnnotator_ImplBase; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JFSIndexRepository; import org.apache.uima.resource.ResourceInitializationException; @@ -94,6 +98,7 @@ else if(token instanceof PunctuationToken){ pwr.flush(); } + @Override public void destroy() { super.destroy(); diff --git a/src/main/java/org/ohnlp/medtagger/ie/ae/LineSentenceDetector.java b/src/main/java/org/ohnlp/medtagger/ie/ae/LineSentenceDetector.java index a3498b8..ae388b3 100644 --- a/src/main/java/org/ohnlp/medtagger/ie/ae/LineSentenceDetector.java +++ b/src/main/java/org/ohnlp/medtagger/ie/ae/LineSentenceDetector.java @@ -27,7 +27,8 @@ import java.util.ArrayList; import java.util.Iterator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.jcas.JCas; @@ -42,7 +43,7 @@ public class LineSentenceDetector extends JCasAnnotator_ImplBase { - private Logger logger = Logger.getLogger(getClass().getName()); + private Logger logger = LogManager.getLogger(getClass().getName()); public static final byte CAPS_UNKNOWN = 0; public static final byte CAPS_NONE = 1; diff --git a/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerDynamicIEAnnotator.java b/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerDynamicIEAnnotator.java index 64e08b7..056d0bd 100644 --- a/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerDynamicIEAnnotator.java +++ b/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerDynamicIEAnnotator.java @@ -24,7 +24,8 @@ package org.ohnlp.medtagger.ie.ae; import org.apache.commons.lang3.SerializationUtils; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.cas.FSIterator; @@ -60,7 +61,7 @@ public class MedTaggerDynamicIEAnnotator extends JCasAnnotator_ImplBase { //private Boolean hyphen2space = false; private Boolean punct2space = false; - private Logger iv_logger = Logger.getLogger(getClass().getName()); + private Logger iv_logger = LogManager.getLogger(getClass().getName()); public void initialize(UimaContext aContext) throws ResourceInitializationException { diff --git a/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerIEAnnotator.java b/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerIEAnnotator.java index 3b0ae79..21ef178 100644 --- a/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerIEAnnotator.java +++ b/src/main/java/org/ohnlp/medtagger/ie/ae/MedTaggerIEAnnotator.java @@ -23,10 +23,11 @@ *******************************************************************************/ package org.ohnlp.medtagger.ie.ae; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.uima.UimaContext; +import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.cas.FSIterator; -import org.apache.uima.fit.component.JCasAnnotator_ImplBase; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.Annotation; import org.apache.uima.resource.ResourceInitializationException; @@ -67,7 +68,7 @@ public class MedTaggerIEAnnotator extends JCasAnnotator_ImplBase { //private Boolean hyphen2space = false; private Boolean punct2space = false; - private Logger iv_logger = Logger.getLogger(getClass().getName()); + private Logger iv_logger = LogManager.getLogger(getClass().getName()); public ResourceUtilManager rum; diff --git a/src/main/java/org/ohnlp/medtagger/ie/util/ResourceUtilManager.java b/src/main/java/org/ohnlp/medtagger/ie/util/ResourceUtilManager.java index 400f78f..5d6149d 100644 --- a/src/main/java/org/ohnlp/medtagger/ie/util/ResourceUtilManager.java +++ b/src/main/java/org/ohnlp/medtagger/ie/util/ResourceUtilManager.java @@ -41,7 +41,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; /** @@ -53,7 +54,7 @@ public class ResourceUtilManager implements Serializable { public transient static String RESOURCEDIR; private transient static ResourceUtilManager INSTANCE = null; - private transient Logger iv_logger = Logger.getLogger(getClass().getName()); + private transient Logger iv_logger = LogManager.getLogger(getClass().getName()); private Pattern regexpPattern = Pattern.compile("(.*)"); private Pattern normPattern = Pattern.compile("^(.*?)\t(.*?)$"); diff --git a/src/main/java/org/ohnlp/medtagger/lvg/LvgLookup.java b/src/main/java/org/ohnlp/medtagger/lvg/LvgLookup.java index fc519fb..7605c3b 100644 --- a/src/main/java/org/ohnlp/medtagger/lvg/LvgLookup.java +++ b/src/main/java/org/ohnlp/medtagger/lvg/LvgLookup.java @@ -32,7 +32,8 @@ import java.util.Iterator; import java.util.Scanner; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.JCasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; @@ -46,7 +47,7 @@ public class LvgLookup extends JCasAnnotator_ImplBase { // LOG4J logger based on class name - private Logger logger = Logger.getLogger("LvgLookup"); + private Logger logger = LogManager.getLogger("LvgLookup"); HashMap lvgMap; HashSet openclass; //private static OpenClassWords pds = new OpenClassWords(); diff --git a/src/main/java/org/ohnlp/medtagger/ml/cr/transShareAnnotation.java b/src/main/java/org/ohnlp/medtagger/ml/cr/transShareAnnotation.java index 0fd2fa5..85b8e42 100644 --- a/src/main/java/org/ohnlp/medtagger/ml/cr/transShareAnnotation.java +++ b/src/main/java/org/ohnlp/medtagger/ml/cr/transShareAnnotation.java @@ -35,6 +35,8 @@ import org.ohnlp.medtagger.ml.type.shareAnnotation; import org.ohnlp.medtagger.ml.type.shareSlot; +import javax.xml.XMLConstants; +import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; @@ -52,10 +54,9 @@ public transShareAnnotation(JCas jcas) { }; public transShareAnnotation(String str, JCas jcas) { - SAXParserFactory factory = SAXParserFactory.newInstance(); mjcas = jcas; try { - SAXParser saxParser = factory.newSAXParser(); + SAXParser saxParser = createSaxParser(); saxParser.parse(new ByteArrayInputStream(str.getBytes()), this); } catch (Throwable t) { t.printStackTrace(); @@ -63,16 +64,26 @@ public transShareAnnotation(String str, JCas jcas) { } public transShareAnnotation(File xmlfile, JCas jcas) { - SAXParserFactory factory = SAXParserFactory.newInstance(); mjcas=jcas; try { - SAXParser saxParser = factory.newSAXParser(); + SAXParser saxParser = createSaxParser(); saxParser.parse(xmlfile, this); } catch (Throwable t) { t.printStackTrace(); } } + private SAXParser createSaxParser() throws ParserConfigurationException, SAXException { + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + factory.setFeature("http://xml.org/sax/features/external-general-entities", false); + factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + SAXParser saxParser = factory.newSAXParser(); // Noncompliant + saxParser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + saxParser.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); + return saxParser; + } + // =========================================================== // SAX DocumentHandler methods // =========================================================== diff --git a/src/main/java/org/ohnlp/medtagger/ml/crfsuite/CRFSuiteWrapper.java b/src/main/java/org/ohnlp/medtagger/ml/crfsuite/CRFSuiteWrapper.java index 8e4c294..c5de668 100644 --- a/src/main/java/org/ohnlp/medtagger/ml/crfsuite/CRFSuiteWrapper.java +++ b/src/main/java/org/ohnlp/medtagger/ml/crfsuite/CRFSuiteWrapper.java @@ -39,14 +39,15 @@ import java.util.List; import java.util.Set; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.ohnlp.medtagger.ml.feature.Feature; import org.ohnlp.medtagger.ml.util.Executer; import org.ohnlp.medtagger.ml.util.PlatformDetection; public class CRFSuiteWrapper { - private Logger iv_logger = Logger.getLogger(getClass().getName()); + private Logger iv_logger = LogManager.getLogger(getClass().getName()); private File executable; public CRFSuiteWrapper() throws Exception { diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties deleted file mode 100644 index a1e29be..0000000 --- a/src/main/resources/log4j.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Log to stdout and stderr -log4j.rootLogger=INFO, stdout, stderr - -# Send TRACE - INFO level to stdout -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold=TRACE -log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.filter.filter1=org.apache.log4j.varia.LevelRangeFilter -log4j.appender.stdout.filter.filter1.levelMin=TRACE -log4j.appender.stdout.filter.filter1.levelMax=INFO -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - -# Send WARN or higher to stderr -log4j.appender.stderr=org.apache.log4j.ConsoleAppender -log4j.appender.stderr.Threshold=WARN -log4j.appender.stderr.Target =System.err -log4j.appender.stderr.layout=org.apache.log4j.PatternLayout -log4j.appender.stderr.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - -# Change this to set Spark log level -log4j.logger.org.apache.spark=WARN -log4j.logger.org.apache.spark.util=ERROR diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000..d0dfa6e --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file