[Biojava-l] Logging in BJ3

Andy Yates ayates at ebi.ac.uk
Tue Oct 21 09:21:26 UTC 2008


Hi Neil,

That's okay the more people take an interest in this the better it will
be. We did discuss this quite a bit ago at a biojava meeting & the
general consensus was bridges can be manually written between the
logging frameworks as and when they are required. Also using the JDK
logger reduces our external dependencies.

However I do like the logging facades & am in favour of them. Especially
SLF4J which does the same thing as commons-logging but relies on the
existence of SLF4J adaptors not the raw logging framework which
commons-logging does. It also has links to a lot more logging frameworks
 including simple-log (https://simple-log.dev.java.net/) & logback
(http://logback.qos.ch/).

There's just so many options here it's hard to gauge what is the best
thing to do. Do we buy into a single framework & use all of its features
(JDK logger has nice things for logging entering & exiting methods along
with locale ResourceBundles) or go for a common denominator.

It's not an easy decision to make ........

Andy

Neil Benn wrote:
> Hello,
> 
>          I'm not sure if I should comment as I have no time to
> contribute LOC but I thought I may as well ;).
> 
> Mark Schreiber wrote:
>> Hi -
>>
>> I would like to strongly advocate the liberal and extensive use of
>> Logging in BioJava3.  The lack of this plagued us (me at least) during
>> bug fixes in previous versions of BioJava.  The default Java logging
>> API is very flexible and easily meets our needs. It's also not too
>> much effort for developers to put in place (you know you use
>> System.println() all over the place anyway).
>>   
> Hmm, that is true but for total completeness you can use
> commons-logging, that is very easy to use and much more flexible as it
> can encapsulate other logging mechanisms (including JDK1.4 logging
> framework).  To use it you simply declare a new logger as follows:
> 
> private static final Log logger = LogFactory.getLog(<Insert classname
> here>);
> 
> The rest of it works pretty much the same as below- if you dovetail
> commons-logging with log4j then you'll cover the most common case of
> logging used in other frameworks - the config files to setup log4j (XML
> and preperties fiels) are well documented all over the web.
>> <snip>
>>
>> I know from experience we will definitely get the most value from this
>> in the IO parsers and ThingBuilders.
>>
>> Any thoughts?
>>   
> +1
>> - Mark
>>
>>
>>
>>     private Logger logger = Logger.getLogger("org.biojava.MyClass");
>>
>>     public Object generateObject(String argument){
>>          logger.entering(""+getClass(), "generateObject", argument);
>>
>>          //expensive logging operation
>>          if (logger.isLoggable( Level.CONFIG )) {
>>             logger.config("DB config: "+ getDBConfigInfo());
>>          }
>>
>>          Object obj = null;
>>          try{
>>
>>             //do some stuff
>>             logger.fine("doing stuff");
>>             obj = new Object();
>>
>>          }catch(Exception ex){
>>              logger.severe("Failed to do stuff");
>>              logger.throwing(""+getClass(), "generateObject", ex);
>>          }
>>
>>          logger.exiting(""+getClass(), "generateObject", obj);
>>          return obj;
>>     }
>> _______________________________________________
>> Biojava-l mailing list  -  Biojava-l at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/biojava-l
>>   
> 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/biojava-l



More information about the Biojava-l mailing list