slf4j - Enhanced SimpleLogger

1 message Options
Embed this post
Permalink
Erik Dick

slf4j - Enhanced SimpleLogger

Reply Threaded More More options
Print post
Permalink
Hi all,

please find attached an enhanced variant of the current SimpleLogger  
(as of slf4j v1.5.9 RC0). I would appreciate if you consider this  
implementation for the standard release of SLF4J.

It differs from the current version such that it is enabled to read a  
system property "org.slf4j.LogLevel" additionally and to set the log  
level accordingly. If the system property is not set it behaves like  
original version and logs on INFO level. The change should have no  
performance penalty since it reads/interprets the system property only  
once (during static initialization of SimpleLogger).

At the 'productive' classes I have only changed the class  
SimpleLogger.java. A much larger change set you will find at the test  
classes. I did that to ensure that all the changes that I have done do  
not harm the overall contract of the implementation

SilentPrintStream has been changed so that it can record the most  
recent line that has been printed to System.err.

InvocationTest has been changed so that it basically tests now the  
SimpleLoggerFactory only; actually the singleton approach for getting  
the logger. All other tests have been reworked and improved.

You will find in the package "org.slf.impl" the new test cases:

SimpleLoggerAbstractTest
SimpleLoggerDefaultTest
SimpleLoggerTraceTest
SimpleLoggerDebugTest
SimpleLoggerInfoTest
SimpleLoggerWarnTest
SimpleLoggerErrorTest

SimpleLoggerAbstractTest is not intended to be executed but in fact  
contains 95% of the executed tests (including the reworked tests from  
the previous InvocationTest). The test strategy is to execute the  
different specializations of SimpleLoggerAbstractTest. Their main task  
is to setup the test environment (setting the log level) and  
performing basic checks. Functionality is tested by executing the  
derived tests from the SimpleLoggerAbstractTest base class. Please  
note that the individual SimpleLogger<Level>Test shall be executed in  
their 'own' VM instance. If not respecting this, the test will fail  
because the system property will never be re-read and such the log  
level will not be set as required by the different test cases (except  
for the first one being executed).

You will notice that the SilentPrintStream.getLastRecordedLine() (in  
conjunction with recordingOn()/recordingOff()) is used to intercept  
the output of the logger and compare it to the expected output. By  
doing this not only the successful call but also the successful  
message creation can be checked.

Please let me know your thoughts on this...

Best regards,
Erik



_______________________________________________
dev mailing list
[hidden email]
http://www.slf4j.org/mailman/listinfo/dev

slf4j-simple.tar.bz2 (14K) Download Attachment