]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
using log4j for Main and TvGids classes
authorJan-Pascal van Best <janpascal@vanbest.org>
Thu, 26 Apr 2012 20:19:57 +0000 (22:19 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Thu, 26 Apr 2012 20:19:57 +0000 (22:19 +0200)
pom.xml
src/main/java/org/vanbest/xmltv/AbstractEPGSource.java
src/main/java/org/vanbest/xmltv/Main.java
src/main/java/org/vanbest/xmltv/RTL.java
src/main/java/org/vanbest/xmltv/TvGids.java
src/main/resources/log4j.properties [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 54d465fce53bab25d7f6426614b1d5c5e5ee0c9b..8cbc3f462b085c8addceb03efabb79646149ca1f 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                        <artifactId>hsqldb</artifactId>
                        <version>2.2.8</version>
                </dependency>
+               <dependency>
+                       <groupId>log4j</groupId>
+                       <artifactId>log4j</artifactId>
+                       <version>1.2.16</version>
+               </dependency>
        </dependencies>
        <build>
                <plugins>
       </resources>
             <filters>
       <filter>${basedir}/target/filter.properties</filter>
-    </filters> 
+    </filters>
+            <pluginManagement>
+               <plugins>
+                       <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+                       <plugin>
+                               <groupId>org.eclipse.m2e</groupId>
+                               <artifactId>lifecycle-mapping</artifactId>
+                               <version>1.0.0</version>
+                               <configuration>
+                                       <lifecycleMappingMetadata>
+                                               <pluginExecutions>
+                                                       <pluginExecution>
+                                                               <pluginExecutionFilter>
+                                                                       <groupId>
+                                                                               org.apache.maven.plugins
+                                                                       </groupId>
+                                                                       <artifactId>
+                                                                               maven-antrun-plugin
+                                                                       </artifactId>
+                                                                       <versionRange>
+                                                                               [1.3,)
+                                                                       </versionRange>
+                                                                       <goals>
+                                                                               <goal>run</goal>
+                                                                       </goals>
+                                                               </pluginExecutionFilter>
+                                                               <action>
+                                                                       <ignore></ignore>
+                                                               </action>
+                                                       </pluginExecution>
+                                               </pluginExecutions>
+                                       </lifecycleMappingMetadata>
+                               </configuration>
+                       </plugin>
+               </plugins>
+            </pluginManagement>
        </build>
 
 </project>
index 57769ac99c9ff42c33ff3fbfc47ee1b4dfa41bc6..c92afb708c5478b0f45e34ad16cab462b011b742 100644 (file)
@@ -47,7 +47,7 @@ public abstract class AbstractEPGSource implements EPGSource {
        }
 
        @Override
-       public void close() throws FileNotFoundException, IOException {
+       public void close() {
                cache.close();
        }
 
index 60c0d2536d95c574ccf49dbb4950f80a687f9dae..6432b0fa34cb97ddc6304a6f67ff6f36866b0c36 100644 (file)
@@ -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 <janpascal@vanbest.org>");
-               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 <janpascal@vanbest.org>");
+               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"));
index e227be1eef4a37444d1d5ce2bd72f160e1f0c4f3..ddd9c287ab25525f5ca4e0fbffc9d573db78623b 100644 (file)
@@ -373,10 +373,6 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                return result;\r
        }\r
 \r
-       public void close() throws FileNotFoundException, IOException {\r
-               super.close();\r
-       }\r
-\r
        // Assumption: programmes are more-or-less in ascending order by start time\r
        private Date parseTime(String time, DateStatus status, int mode) {\r
                Calendar result = Calendar.getInstance();\r
index 0568413fbb199bc37ef336a52efb2c15e7851d0b..36f25009b08114f7f8da918e79af88f086870fd4 100644 (file)
@@ -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 (file)
index 0000000..6566302
--- /dev/null
@@ -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