Hi, I agree with every point except for skipping isInfoEnabled(). I believe we must use these guard conditions. Some might decide to run Stratos with only Error/Warn level logs. We might avoid guard conditions for error/fatal level logs.
And use String.format. Always avoid concatenation. String.format is much better than concatenation and it helps string pooling as well. Thanks! On Mon, Feb 23, 2015 at 11:22 AM, Rajkumar Rajaratnam <[email protected]> wrote: > +1 Lahiru. > > Also if you are logging an object, make sure you are overriding toString() > method of the class. Otherwise the log is nothing but a garbage. Just got > this log on master branch. > > *Rule executed for: > org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext@42c0a4d8* > > ClusterLevelPartitionContext class doesn't override toString() method. > > Thanks. > > On Mon, Feb 23, 2015 at 7:27 AM, Lahiru Sandaruwan <[email protected]> > wrote: > >> Hi all, >> >> There are lot of different approaches of logging in Stratos code. May be >> we can follow same format so that code looks clean and understandable. This >> is to decide which way we should follow. >> >> *1. Separation of objects* >> >> We are using square brackets in most of the places. I think that is a >> good approach. May be we can use a comma after one object. We need to >> decide. >> >> E.g. 1 >> >> [network-partition] network-partition-1 [cluster-instance] >> single-cartridge-app-1 [cluster] php1.php.domain >> >> E.g. 2 >> >> [network-partition] network-partition-1, [cluster-instance] >> single-cartridge-app-1, [cluster] php1.php.domain >> >> *2. Using same text for identifying a particular type* >> E.g. We use [network-parition], [NW partition], [network partition] in >> different places. We could stick to one. >> >> *3. Using the String.format or concatenation. * >> >> String.format brings clarity and readability while it reduces the >> performance against concatenation. We need to decide what should be our >> choice. I would vote for String.format considering performance gain is >> negligible if we only have info level logs. >> >> *4. Use isDebugEnabled() and don't use isInfoEnabled()* >> >> Regarding this, we must use *isDebugEnabled* everywhere we do debug >> logging. But i think we can skip *isInfoEnabled *assuming we will have >> info logs in limited numbers. Wdyt? >> >> We can add a guidance at [2] for developers regarding all the matters >> here, after deciding. >> >> Thanks. >> >> [1] >> http://stackoverflow.com/questions/925423/is-it-better-practice-to-use-string-format-over-string-concatenation-in-java >> [2] https://cwiki.apache.org/confluence/display/STRATOS/Developer+Guide >> -- >> -- >> Lahiru Sandaruwan >> Committer and PMC member, Apache Stratos, >> Senior Software Engineer, >> WSO2 Inc., http://wso2.com >> lean.enterprise.middleware >> >> email: [email protected] blog: http://lahiruwrites.blogspot.com/ >> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146 >> >> > > > -- > Rajkumar Rajaratnam > Committer & PMC Member, Apache Stratos > Software Engineer, WSO2 > > Mobile : +94777568639 > Blog : rajkumarr.com > > -- > Isuru Perera > Senior Software Engineer | WSO2, Inc. | http://wso2.com/ > Lean . Enterprise . Middleware > > about.me/chrishantha > <http://rajkumarr.com> >
