<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 <style>BODY{font:10pt Tahoma, Verdana, sans-serif;}</style>
</head>
<body>
<DIV>Good Afternoon<BR><BR>I have created a wrapper layer for SLF4J (Listed below). However the line number are incorrect, it is using the line numbers in the wrapper class not the class that I called the wrapper from. What is the correct way to fix this?<BR><BR>package com.test.commons.logging;<BR><BR>import com.test.commons.logging.LoggerFactory.LEVEL;<BR><BR>public class Logger {<BR><BR>&nbsp;&nbsp;&nbsp; private LEVEL infoLevel = LEVEL.FINE;<BR>&nbsp;&nbsp;&nbsp; private LEVEL debugLevel = LEVEL.FINE;<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; private org.slf4j.Logger logger = null;<BR><BR>&nbsp;&nbsp;&nbsp; public Logger(Class clazz, LEVEL infoLevel, LEVEL debugLevel) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.infoLevel = infoLevel;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.debugLevel = debugLevel;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger = org.slf4j.LoggerFactory.getLogger(clazz);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public Logger(String name, LEVEL infoLevel, LEVEL debugLevel) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.infoLevel = infoLevel;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.debugLevel = debugLevel;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger = org.slf4j.LoggerFactory.getLogger(name);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message, throwable);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isInfoEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(LEVEL level, String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isInfoEnabled()) &amp;&amp; (level.ordinal() &lt;= infoLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(LEVEL level, String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isInfoEnabled()) &amp;&amp; (level.ordinal() &lt;= infoLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message, throwable);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void info(LEVEL level, String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isInfoEnabled()) &amp;&amp; (level.ordinal() &lt;= infoLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.info(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; // Debug messages.<BR>&nbsp;&nbsp;&nbsp; public void debug(String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isDebugEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; public void debug(String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isDebugEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message, throwable);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void debug(String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isDebugEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void debug(LEVEL level, String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isDebugEnabled()) &amp;&amp; (level.ordinal() &lt;= debugLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void debug(LEVEL level, String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isDebugEnabled()) &amp;&amp; (level.ordinal() &lt;= debugLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message, throwable);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; public void debug(LEVEL level, String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if((logger.isDebugEnabled()) &amp;&amp; (level.ordinal() &lt;= debugLevel.ordinal())) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; // The highest value; intended for extremely important messages (e.g. fatal program errors).<BR>&nbsp;&nbsp;&nbsp; public void severe(String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isErrorEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.error(message);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void severe(String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isErrorEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.error(message, throwable);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void severe(String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isErrorEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.error(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; // Intended for warning messages.<BR>&nbsp;&nbsp;&nbsp; public void warning(String message) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isWarnEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.warn(message);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void warning(String message, Throwable throwable) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isWarnEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.warn(message, throwable);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; public void warning(String message, Object[] objects) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(logger.isWarnEnabled()) {<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.warn(message, objects);<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>}</DIV><BR />
<BR />
<HR />
<BR />
Notice:&nbsp;This&nbsp;email&nbsp;is&nbsp;confidential.&nbsp;&nbsp;If&nbsp;you&nbsp;are&nbsp;not&nbsp;the&nbsp;intended&nbsp;recipient,&nbsp;please&nbsp;notify&nbsp;the&nbsp;sender&nbsp;by&nbsp;return&nbsp;email&nbsp;and&nbsp;delete&nbsp;this&nbsp;message&nbsp;from&nbsp;your&nbsp;mail&nbsp;box&nbsp;without&nbsp;reading&nbsp;or&nbsp;copying&nbsp;it&nbsp;or&nbsp;any&nbsp;attachments.<BR />
<BR />
Attention:&nbsp;Ce&nbsp;courriel&nbsp;est&nbsp;confidentiel.&nbsp;Si&nbsp;vous&nbsp;n'êtes&nbsp;pas&nbsp;le&nbsp;destinataire&nbsp;prévu,&nbsp;veuillez&nbsp;en&nbsp;informer&nbsp;l'expéditeur&nbsp;par&nbsp;le&nbsp;courriel&nbsp;de&nbsp;retour&nbsp;et&nbsp;le&nbsp;supprimer&nbsp;immédiatement&nbsp;sans&nbsp;le&nbsp;lire&nbsp;ou&nbsp;le&nbsp;copier&nbsp;(incluant&nbsp;les&nbsp;pièces&nbsp;jointes,&nbsp;&nbsp;le&nbsp;cas&nbsp;échéant).<BR />
</body></html>