Reputation: 301
SLF4J + Logback seems to be a smart choice when it comes to implement logging in a web application. However, after Googling for how to implement it, I could see that it is mostly used in Maven projects and a pom.xml file is required. Mine is a non-Maven project and there is no pom.xml file. Can I still implement SLF4J + Logback logging and how?
Upvotes: 1
Views: 2937
Reputation: 69
Thats correct the combination can be used iin non-maven java projects too.
Pl put follwoing jars and logback.xml in classpath:
sample XML in my logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d %5p [%file:%line] - %m%n</pattern>
</layout>
</appender>
<logger name="org.uamlog">
<level value="INFO"/>
</logger>
<logger name="org.uamlog">
<level value="WARN"/>
</logger>
<logger name="org.uamlog">
<level value="ERROR"/>
</logger>
<logger name="org.uamlog">
<level value="DEBUG"/>
</logger>
<logger name="org.uamlog">
<level value="TRACE"/>
</logger>
<root>
<level value="WARN"/>
<appender-ref ref="CONSOLE"/>
</root>
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
</root>
<root>
<level value="DEBUG"/>
<appender-ref ref="CONSOLE"/>
</root>
<root>
<level value="TRACE"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
My logback test code in Java:
package checklogback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLog {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger = LoggerFactory.getLogger("myLogger");
logger.debug("My first comment using logback !!!");
}
}
Output:
#logback.classic pattern: %d %5p [%file:%line] - %m%n
21:22:39,905 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
21:22:39,905 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
21:22:39,906 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at
21:22:40,533 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
21:22:41,009 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
21:22:41,029 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
21:22:41,594 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - This appender no longer admits a layout as a sub-component, set an encoder instead.
21:22:41,594 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
21:22:41,594 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
21:22:41,596 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.uamlog level set to INFO
21:22:41,596 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.uamlog level set to WARN
21:22:41,596 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.uamlog level set to ERROR
21:22:41,597 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.uamlog level set to DEBUG
21:22:41,597 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.uamlog level set to TRACE
21:22:41,597 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - ROOT level set to WARN
21:22:41,597 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
21:22:41,598 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - ROOT level set to INFO
21:22:41,598 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
21:22:41,598 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - ROOT level set to DEBUG
21:22:41,598 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
21:22:41,598 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - ROOT level set to TRACE
21:22:41,599 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
21:22:41,599 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
21:22:41,620 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@2fcac6db - Registering current configuration as safe fallback point
2015-02-03 21:22:41,703 DEBUG [TestLog.java:11] - My first comment using logback !!!
Hope this helps... cheers!
Upvotes: 1
Reputation: 17431
Maven just manages dependencies, compilation and so on. You can still use slf4j and logback, but you'll have to manually (unless using another build tool such as ant or sbt) specify the classpath to include the relevant jars when compiling and running, via -cp
.
Upvotes: 2