I am trying to add log4j logging so that the logs are written to a file.
My java program is executed from ThreadingTest.java and it starts 4 threads. One of the Thread starts ThreadingHDFSUsage.java code and I am trying to write the logs from this class to a file.
Here is my log4j.property file:
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=D:/Java/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
Here is my project structure:
Project1
|
|---src/main/java
| |---com.abcd.hadoop.monitoring.Hadoop_Monitoring_1
| |---ThreadingTest.java
| |---ThreadingHDFSUsage.java
|---src/main/resources
|---log4j.property
Here is my threading.test java class code:
import java.io.File;
import java.util.ArrayList;
import java.util.Hashtable;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import net.anthavio.phanbedder.Phanbedder;
public class ThreadingTest {
public static File phantomjs = Phanbedder.unpack(); //Phanbedder to the rescue!
public static void main( String[] args ) throws InterruptedException
{
//webdriver objects
DesiredCapabilities dcaps = new DesiredCapabilities();
dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());
String namenode = "xx.xx.xx.xx";
int j = 0;
ArrayList<String> coreNodeName=new ArrayList<String>();
ArrayList<String> coreNodeData=new ArrayList<String>();
for (int i=0;i<3;i++){
j=j+1;
System.out.println("---------------------------------Try no: "+j+"---------------------------------------------");
Thread.sleep(10000);
ThreadingHDFSUsage HDFSUsage=new ThreadingHDFSUsage(dcaps);
ThreadingRAMandContainers RAMandContainers=new ThreadingRAMandContainers(dcaps);
ThreadingCoreNodesHDFSUsage CoreNodesHDFSUsage=new ThreadingCoreNodesHDFSUsage(dcaps);
ThreadingApplicationMonitoring ApplicationMonitoring= new ThreadingApplicationMonitoring(dcaps);
HDFSUsage.start();
RAMandContainers.start();
CoreNodesHDFSUsage.start();
ApplicationMonitoring.start();
HDFSUsage.join();
RAMandContainers.join();
CoreNodesHDFSUsage.join();
ApplicationMonitoring.join();
//InfluxDataPush.sendData(namenode,OverallHDFSUsage1, RAMUsage1, TotalContainersCount, ContainersRunning,RAMAvailable, RAMReserved, TotalMaps,TotalReducers,RunningMapsCount,
// RunningReduceCount,FailedMapCount,FailedRedcueCount,KilledMapCount,KilledReduceCount,SuccessfulMapCount,SuccessfulReduceCount,CoreNodeNameAndData);
}
}
}
Here is my ThreadingHDFSUsage.java code:
package com.abcd.hadoop.monitoring.Hadoop_Monitoring_1;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class ThreadingHDFSUsage extends Thread {
//private PhantomJSDriver driver;
private DesiredCapabilities dcaps;
static Logger log = Logger.getLogger(ThreadingHDFSUsage.class.getName());
public ThreadingHDFSUsage(DesiredCapabilities dcaps) {
// TODO Auto-generated constructor stub
this.dcaps = dcaps;
}
public void run(){
System.out.println("task HDFS Usage");
PhantomJSDriver driver = new PhantomJSDriver(dcaps);
try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(".........HDFS Usage..........");
log.debug("Hello this is a debug message");
String OverallHDFSUsage[] = null;
try {
OverallHDFSUsage = HDFSUsage.getWebData(driver,"http://52.23.253.128:9101/dfshealth.html#tab-overview","//*[@id=\"tab-overview\"]/table[2]/tbody/tr[2]/td","");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String OverallHDFSUsage1 = OverallHDFSUsage[0];
}
}
After executing the code, I do not get any log file created at mentioned location and get following in console output:
PhantomJS is launching GhostDriver...
[INFO - 2015-10-29T17:19:26.710Z] GhostDriver - Main - running on port 22157
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Please help since i am not able to get it work.