From: Jan-Pascal van Best Date: Thu, 26 Apr 2012 20:19:57 +0000 (+0200) Subject: using log4j for Main and TvGids classes X-Git-Tag: 0.9.4~9 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=0e7ebf605d29829a9065af65932492d5fd2608b2;p=tv_grab_nl_java using log4j for Main and TvGids classes --- diff --git a/pom.xml b/pom.xml index 54d465f..8cbc3f4 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,11 @@ hsqldb 2.2.8 + + log4j + log4j + 1.2.16 + @@ -95,7 +100,42 @@ ${basedir}/target/filter.properties - + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.apache.maven.plugins + + + maven-antrun-plugin + + + [1.3,) + + + run + + + + + + + + + + + + diff --git a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java index 57769ac..c92afb7 100644 --- a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java +++ b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java @@ -47,7 +47,7 @@ public abstract class AbstractEPGSource implements EPGSource { } @Override - public void close() throws FileNotFoundException, IOException { + public void close() { cache.close(); } diff --git a/src/main/java/org/vanbest/xmltv/Main.java b/src/main/java/org/vanbest/xmltv/Main.java index 60c0d25..6432b0f 100644 --- a/src/main/java/org/vanbest/xmltv/Main.java +++ b/src/main/java/org/vanbest/xmltv/Main.java @@ -47,6 +47,10 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.cli.Parser; import org.apache.commons.io.FileUtils; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + public class Main { private File configFile; private Config config; @@ -54,6 +58,8 @@ public class Main { private int days = 5; private int offset = 0; private boolean clearCache = false; + + static Logger logger = Logger.getLogger(Main.class); /** * @param args */ @@ -61,23 +67,24 @@ public class Main { public Main() { this.configFile = defaultConfigFile(); this.outputWriter = System.out; + //PropertyConfigurator.configure(args[0]); } public void showHeader() { - System.out.println("tv_grab_nl_java version "+config.project_version + " (built "+config.build_time+")"); - System.out.println("Copyright (C) 2012 Jan-Pascal van Best "); - System.out.println("tv_grab_nl_java comes with ABSOLUTELY NO WARRANTY. It is free software, and you are welcome to redistribute it"); - System.out.println("under certain conditions; `tv_grab_nl_java --license' for details."); + logger.info("tv_grab_nl_java version "+config.project_version + " (built "+config.build_time+")"); + logger.info("Copyright (C) 2012 Jan-Pascal van Best "); + logger.info("tv_grab_nl_java comes with ABSOLUTELY NO WARRANTY. It is free software, and you are welcome to redistribute it"); + logger.info("under certain conditions; `tv_grab_nl_java --license' for details."); } public void run() throws FactoryConfigurationError, Exception { if (!config.quiet) { showHeader(); - System.out.println("Fetching programme data for " + this.days + " days starting from day " + this.offset); + logger.info("Fetching programme data for " + this.days + " days starting from day " + this.offset); int enabledCount = 0; for(Channel c: config.channels) { if (c.enabled) enabledCount++; } - System.out.println("... from " + enabledCount + " channels"); - System.out.println("... using cache at " + config.cacheDbHandle); + logger.info("... from " + enabledCount + " channels"); + logger.info("... using cache at " + config.cacheDbHandle); } if (clearCache) { ProgrammeCache cache = new ProgrammeCache(config); @@ -123,16 +130,8 @@ public class Main { writer.flush(); writer.close(); - try { - for(int source: guides.keySet()) { - guides.get(source).close(); - } - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + for(int source: guides.keySet()) { + guides.get(source).close(); } if (!config.quiet) { @@ -143,9 +142,9 @@ public class Main { stats.cacheMisses += part.cacheMisses; stats.fetchErrors += part.fetchErrors; } - System.out.println("Number of programmes from cache: " + stats.cacheHits); - System.out.println("Number of programmes fetched: " + stats.cacheMisses); - System.out.println("Number of fetch errors: " + stats.fetchErrors); + logger.info("Number of programmes from cache: " + stats.cacheHits); + logger.info("Number of programmes fetched: " + stats.cacheMisses); + logger.warn("Number of fetch errors: " + stats.fetchErrors); } } @@ -263,7 +262,7 @@ public class Main { config.setChannels(channels); try { config.writeConfig(configFile); - System.out.println("Configuration file written to " + configFile.getPath()); + logger.info("Configuration file written to " + configFile.getPath()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -393,6 +392,9 @@ public class Main { if (line.hasOption("log-level")) { config.logLevel = Integer.parseInt(line.getOptionValue("log-level")); if (config.quiet) config.logLevel = 0; + // TODO: make distinction between levels for console and + // file appenders + logger.getRootLogger().setLevel(Level.toLevel(config.logLevel, Level.INFO)); } if (line.hasOption("cache")) { config.setCacheFile(line.getOptionValue("cache")); diff --git a/src/main/java/org/vanbest/xmltv/RTL.java b/src/main/java/org/vanbest/xmltv/RTL.java index e227be1..ddd9c28 100644 --- a/src/main/java/org/vanbest/xmltv/RTL.java +++ b/src/main/java/org/vanbest/xmltv/RTL.java @@ -373,10 +373,6 @@ public class RTL extends AbstractEPGSource implements EPGSource { return result; } - public void close() throws FileNotFoundException, IOException { - super.close(); - } - // Assumption: programmes are more-or-less in ascending order by start time private Date parseTime(String time, DateStatus status, int mode) { Calendar result = Calendar.getInstance(); diff --git a/src/main/java/org/vanbest/xmltv/TvGids.java b/src/main/java/org/vanbest/xmltv/TvGids.java index 0568413..36f2500 100644 --- a/src/main/java/org/vanbest/xmltv/TvGids.java +++ b/src/main/java/org/vanbest/xmltv/TvGids.java @@ -40,6 +40,7 @@ import javax.xml.stream.XMLStreamWriter; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import net.sf.ezmorph.MorpherRegistry; import net.sf.ezmorph.ObjectMorpher; @@ -60,6 +61,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource { private static final int MAX_DAYS_AHEAD_SUPPORTED_BY_TVGIDS = 3; public static String NAME="tvgids.nl"; + + static Logger logger = Logger.getLogger(TvGids.class); public TvGids(int sourceId, Config config) { super(sourceId, config); @@ -121,7 +124,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { case '3':result.add("Afgeraden voor kinderen jonger dan 12 jaar"); break; case '4':result.add("Afgeraden voor kinderen jonger dan 16 jaar"); break; default: if (!config.quiet) { - System.out.println("Unknown kijkwijzer character: " + c + " in string " + s); + logger.warn("Unknown kijkwijzer character: " + c + " in string " + s); } } } @@ -154,7 +157,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { e.printStackTrace(); } - if (config.logJSON()) System.out.println(json.toString()); + logger.debug("tvgids channels json: " + json.toString()); JSONArray jsonArray = JSONArray.fromObject( json.toString() ); // System.out.println( jsonArray ); @@ -174,7 +177,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { private JSONObject fetchJSON(URL url) throws Exception { String json = fetchURL(url); - if (config.logJSON()) System.out.println(json); + logger.debug(json); return JSONObject.fromObject( json ); } @@ -262,10 +265,10 @@ public class TvGids extends AbstractEPGSource implements EPGSource { //System.out.println("From cache: " + programme.getString("titel")); stats.cacheHits++; } - //System.out.println(" titel:" + programme.getString("titel")); - //System.out.println("datum_start:" + programme.getString("datum_start")); - //System.out.println(" datum_end:" + programme.getString("datum_end")); - //System.out.println(" genre:" + programme.getString("genre")); + logger.trace(" titel:" + programme.getString("titel")); + logger.trace("datum_start:" + programme.getString("datum_start")); + logger.trace(" datum_end:" + programme.getString("datum_end")); + logger.trace(" genre:" + programme.getString("genre")); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", new Locale("nl")); result.startTime = df.parse(programme.getString("datum_start")); result.endTime = df.parse(programme.getString("datum_end")); @@ -279,9 +282,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { // FIXME where to do this? cache.put(getId(), id, result); } - if(config.logProgrammes()) { - System.out.println(result.toString()); - } + logger.debug(result); return result; } @@ -289,12 +290,12 @@ public class TvGids extends AbstractEPGSource implements EPGSource { try { fillJSONDetails(id, result); } catch (Exception e) { - if (!config.quiet) System.out.println("Error fetching details for programme " + result.toString() ); + logger.warn("Error fetching details for programme " + result.toString() ); } try { fillScraperDetails(id, result); } catch (Exception e) { - if (!config.quiet) System.out.println("Error fetching details for programme " + result.toString() ); + logger.warn("Error fetching details for programme " + result.toString() ); } if ((result.secondaryTitles==null || result.secondaryTitles.isEmpty()) && @@ -302,9 +303,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { for(Programme.Title t: result.titles) { String[] parts = t.title.split("\\s*:\\s*", 2); if (parts.length >= 2 && parts[0].length()>=5) { - if (config.logLevel >= Config.LOG_DEBUG) { - System.out.println("Splitting title from \"" + t.title + "\" to: \"" + parts[0].trim() + "\"; sub-title: \"" + parts[1].trim() + "\""); - } + logger.debug("Splitting title from \"" + t.title + "\" to: \"" + parts[0].trim() + "\"; sub-title: \"" + parts[1].trim() + "\""); t.title = parts[0].trim(); result.addSecondaryTitle(parts[1].trim()); } @@ -378,9 +377,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { } else if (key.equals("zender_id")) { // ignore } else { - if (!config.quiet) { - System.out.println("Unknown key in tvgids.nl json details: \"" + key + "\""); - } + logger.warn("Unknown key in tvgids.nl json details: \"" + key + "\""); } } } @@ -393,18 +390,14 @@ public class TvGids extends AbstractEPGSource implements EPGSource { URL url = HTMLDetailUrl(id); String clob=fetchURL(url); - //System.out.println("clob:"); - //System.out.println(clob); Matcher m = progInfoPattern.matcher(clob); if (m.find()) { String progInfo = m.group(); - //System.out.println("progInfo"); - //System.out.println(progInfo); Matcher m2 = infoLinePattern.matcher(progInfo); while (m2.find()) { - //System.out.println(" infoLine: " + m2.group()); - //System.out.println(" key: " + m2.group(1)); - //System.out.println(" value: " + m2.group(2)); + logger.trace(" infoLine: " + m2.group()); + logger.trace(" key: " + m2.group(1)); + logger.trace(" value: " + m2.group(2)); String key = m2.group(1).toLowerCase(); String value = m2.group(2); if (key.equals("bijzonderheden")) { @@ -425,7 +418,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { if (m3.find()) { result.setVideoQuality(m3.group()); } else { - if (!config.quiet) System.out.println(" Unknown value in 'bijzonderheden': " + item); + logger.warn(" Unknown value in 'bijzonderheden': " + item); } } } @@ -438,14 +431,11 @@ public class TvGids extends AbstractEPGSource implements EPGSource { kijkwijzer.add(m3.group(1)); } if (!kijkwijzer.isEmpty()) { - // log.debug() - // System.out.println(" (kijkwijzer): " + p.details.kijkwijzer); - // System.out.println(" kijkwijzer: " + kijkwijzer); + logger.debug(" (kijkwijzer): " + p.details.kijkwijzer); + logger.debug(" kijkwijzer: " + kijkwijzer); } } } - -// result.details.fixup(result, config.quiet); } /** diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..6566302 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,25 @@ +# Set root logger level to INFO and its only appender to stdout. +log4j.rootLogger=INFO, stdout + +# stdout is set to be a ConsoleAppender. +log4j.appender.stdout=org.apache.log4j.ConsoleAppender + +# stdout uses PatternLayout. +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +#log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +# Only log the message itself to the console +log4j.appender.stdout.layout.ConversionPattern=%m%n + +# Disabled, maybe use later +# log4j.appender.file=org.apache.log4j.RollingFileAppender +# log4j.appender.file.File=example.log +# +# log4j.appender.file.MaxFileSize=100KB +# # Keep two backup files +# log4j.appender.file.MaxBackupIndex=2 +# +# log4j.appender.file.layout=org.apache.log4j.PatternLayout +# log4j.appender.file.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c - %m%n + +# Shut up hsqldb +log4j.logger.hsqldb.db=WARN