<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
 <meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1'>
 <style>BODY{font:10pt Tahoma, Verdana, sans-serif;}</style>
</head>
<body>
<DIV>Hey Ralph</DIV>
<DIV>&nbsp;</DIV>
<DIV>Took a look at the call and the wrapper class. My issue I dont want to esxpose the methods defined in the Logger interface. I only want to expose my methods for logging. Thats why I did not implement the Logger interface. Can you suggest how I could deal with the line number issue with out implementing Logger?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks</DIV><BR>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<HR>
<B>From:</B> Ralph Goers [mailto:rgoers@apache.org]<BR><B>To:</B> slf4j developers list [mailto:dev@slf4j.org]<BR><B>Sent:</B> Fri, 20 Feb 2009 17:44:38 -0500<BR><B>Subject:</B> Re: [slf4j-dev] SLF4J Wrapper class line number incorrect<BR><BR>
<DIV>
<DIV>Take a look at XLogger in slf4j-ext.
<DIV><BR></DIV>
<DIV>Out of curiosity, what do you need the wrapper for?</DIV>
<DIV><BR></DIV>Ralph</DIV>
<DIV><BR></DIV>
<DIV>On Feb 20, 2009, at 2:58 PM, Ashley Westwell wrote:</DIV><BR class=Apple-interchange-newline>
<BLOCKQUOTE type="cite"><SPAN class=Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0">
<DIV style="FONT: 10pt Tahoma, Verdana, sans-serif">
<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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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;<SPAN class=Apple-converted-space>&nbsp;</SPAN><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>_______________________________________________<BR>dev mailing list<BR><A href="mailto:dev@slf4j.org">dev@slf4j.org</A><BR><A href="http://www.slf4j.org/mailman/listinfo/dev">http://www.slf4j.org/mailman/listinfo/dev</A></DIV></SPAN></BLOCKQUOTE></DIV><BR></BLOCKQUOTE>
<STYLE>
 * {word-wrap:break-word;-webkit-nbsp-mode:space;-webkit-line-break:after-white-space;;}
</STYLE>

<DIV>&nbsp;</DIV>
<DIV>&nbsp;</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>