Friday, July 26, 2013

Measuring time

How to measure time elapsed when invoking method or doing some processing.

long start = System.nanoTime();
sum_slow();
long end = System.nanoTime();
long diff = end - start;
System.out.println("Time: " + diff / 1000000000.0 + " seconds");
System.out.println("Time: " + TimeUnit.SECONDS.convert(diff, TimeUnit.NANOSECONDS) + " seconds");

Test:
Time: 18.596630883 seconds
Time: 18 seconds

Wednesday, July 24, 2013

Logging

log4j 1.2


Layouts:

#from mobicents-jainslee-2.7.0.FINAL-jboss-5.1.0.GA
%d{ABSOLUTE} %-5p [%c{1}] (%t) %m%n
21:47:59,146 WARN  [LogTest] (main) Sample warn message

%d [%t] %-5p %c - %m%n
2013-07-24 21:47:40,572 [main] WARN  org.mobicents.slee.test.LogTest - Sample warn message

# Pattern to output the caller's file name and line number.
%5p [%t] (%F:%L) - %m%n
 WARN [main] (LogTest.java:14) - Sample warn message

%d{ISO8601} [%t] %-5p (%F:%L) - %m%n 
 2013-07-24 21:55:03,407 [main] WARN  (LogTest.java:14) - Sample warn message

Appender's treshhold vs category

Treshhold is main filter, everything above Threshold value will go to appender. Then category can filter it further to priority's value.
In bellow example every logger in javax.slee.* package will be printed only if it is at least WARN level.

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="INFO"/>
...
</appender>

<category name="javax.slee">
<priority value="WARN" />
</category>


Ref:


Complete log4j.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">



<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"

debug="true">



<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p (%F:%L) - %m%n"/>
</layout>
</appender>

<category name="org.mobicents" additivity="false">
<level value="warn" />
<appender-ref ref="consoleAppender" />
</category>

</log4j:configuration>