swirl
Home Software Blog Wallpapers Webtools
A HelloWorld with Apache commons, Gradle and Log4J
Tuesday 25, August 2015   |   Post link   |   Sample code  Download related meterial

What I am going to do here is create a simple HelloWorld application with a few lines which get logged using Apache-commons logging facade and Log4J providing the actual logging implementation. The sample assumes that you have JDK 1.7+ and Gradle installed correctly on your system.

My working directory will be /home/siddharth/Temp/GradleTest. All files and folders mentioned will be created within this directory. For this project, I will use the standard folder structure required by Gradle. The following folders need to be created under GradleTest:

GradleTest
+- src
     +- main
          +- java
          +- resources

Let's create the build.gradle file under GradleTest directory which will be used by Gradle to build the project. The contents of this file is:

apply plugin: 'java'
repositories{
	mavenCentral()
}
dependencies {
	compile 'log4j:log4j:1.2.17'
	compile 'commons-logging:commons-logging:1.2'
} 
jar {
	from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
	manifest {
		attributes 'Main-Class': 'Sample'
	}
}

The java-plugin supports a number of tasks which are mentioned here. Now that we have the instructions for gradle ready lets create the HelloWorld program.

Create a file named 'Sample.java' within GradleTest/src/main/java. The content of this file is:

import java.lang.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Sample {
	final static Log logger = LogFactory.getLog(Sample.class);
	public static void main(String[] args) {
		logger.debug("main start");	
		System.out.println("Hello Siddharth");
		logger.debug("main end");
	}
}

Create a text file named 'log4j.properties' in the GradleTest/src/main/resources directory. This file is used to configure the behavior of Log4J. The content of this file is below:

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=$HOME
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
We are now all set to build the project. Open a terminal window (command prompt in Windows). Navigate to the GradleTest folder, for me this is /home/siddharth/Temp/GradleTest. Type in:
gradle assemble

This will build the project. Since we have mentioned Apache-commons and Log4J as dependencies, these will be downloaded as part of the build process; you'll need to be connected to the WWW. The output of the build process should look something like this:

gradle-hello.png
Lets now test if everything got built as it should have by running the code. While in the GradleTest directory, type in:
> java -cp build/libs -jar build/libs/GradleTest.jar

You should see the output of the program.

gradle-hello-running.png
Sample code  Download related meterial


Load Comments

Posts By Year

2016 (6)
2017 (5)
2012 (2)
2013 (4)
2014 (2)
2015 (18)

Posts By Category

Software Engineering (1)
IIS (1)
T-SQL (1)
Git (1)
Technology (1)
Database migration (1)
PHP (1)
Corporate culture (1)
Tablet (1)
OData (1)
Containers (3)
Lucene (1)
Test Driven (1)
Java (2)
TDD (1)
Solr (1)
XML (1)
TSQL (5)
Windows (4)
PowerShell (1)
Software development (1)
Wallpapers (1)
Utilities (1)
Entity Framework (2)
Rants (5)
Life (5)
Programming (13)
Office (1)
Book review (3)
Sql Server (1)
ASP.NET MVC (4)
Android (1)
Desktop (1)
Unit Testing (1)

Posts By Tags

Dockers(2) Books(1) Organization(1) Busy(1) PowerShell(1) PHP(1) Backup(1) Database(1) Containers(3) Mobile Apps(1) Paths(1) SSH(1) Web Development(4) Yii(1) Debugging(1) Advertising(1) Adults(1) GradleApache(1) C#(2) SQL Code-first Migration(1) Developer(1) Consumerism(1) Log4J(1) Self reliance(1) Company culture(1) Entity framework(1) Work culture(1) Programming(1) Management(2) Book review(2) Validation(2) C++(1) Sql Express(1) HierarchyID(1) Lucene(1) IIS(1) Windows 10(1) Cmdlet(1) Intelli J(1) JavaScript(1) Spirituality(1) Migration history(1) Tablet(1) OData(1) TDD(1) Data-time(1) Beliefs(1) Checkbox(1) CTE(1) CSRF(1) JSON(1) Windows 8.1(1) Quality(1) XML(1) ASP.NET(4) TSQL(3) File history(1) Windows(1) Wallpapers(1) SD card(1) File copy(1) SQL(1) Windows 2016(2) Python(1) MVC(4) Url rewrite(1) Solr(1) Modern Life(1) System Image(1) Android(1) Commons(1) Office(1) Anti-forgery(1)