<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>
}
@Override
- public void close() throws FileNotFoundException, IOException {
+ public void close() {
cache.close();
}
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;
private int days = 5;
private int offset = 0;
private boolean clearCache = false;
+
+ static Logger logger = Logger.getLogger(Main.class);
/**
* @param args
*/
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);
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) {
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);
}
}
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();
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"));
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
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;
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);
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);
}
}
}
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 );
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 );
}
//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"));
// FIXME where to do this?
cache.put(getId(), id, result);
}
- if(config.logProgrammes()) {
- System.out.println(result.toString());
- }
+ logger.debug(result);
return result;
}
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()) &&
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());
}
} 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 + "\"");
}
}
}
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")) {
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);
}
}
}
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);
}
/**
--- /dev/null
+# 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