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


Comments

Posts By Year

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

Posts By Category

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

Posts By Tags

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