This is a nice showcase for an Either data type similar to Optional, but with a value or an error.
On 12 April 2017 at 00:41, Gary Gregory <[email protected]> wrote: > The problem with the API as it is now is that I have no idea if the API > did what I asked it to do. It does initialize log4j all right but not in a > way I expect. > > I see that we could: > > 1) make the current API throw an IllegalArgumentException that means "file > not found", this keeps the API signature the same. > 2) make the current API return null (but should it still initialize log4j > with the 'next' config file it finds?). Not great as this would likely > break some apps. > 3) add a new API that throws an exception that means 'config file not > found' > 4) add a new API that returns null > > The nice thing about throwing an exception is that you can give a detailed > error message. Returning null tells you something is wrong, not what, still > a mystery. > > So I prefer 3). > > Regardless, we need some better Javadocs on the existing APIs... the > behavior is just too surprising IMO. > > Thoughts? > > Gary > > > > On Tue, Apr 11, 2017 at 10:01 PM, Ralph Goers <[email protected]> > wrote: > >> That’s a good point. It is a programmatic interface so it should return >> an error. But generally we want logging to do something reasonable other >> than fail, so it should either use whatever configuration it finds or use >> the default. >> >> Ralph >> >> On Apr 11, 2017, at 8:42 PM, Remko Popma <[email protected]> wrote: >> >> I thought Gary needed a way to detect that the specified location didn't >> work. But perhaps a warning message is sufficient. >> >> Sent from my iPhone >> >> On Apr 12, 2017, at 10:05, Ralph Goers <[email protected]> >> wrote: >> >> I'd prefer an error message but then have it continue with the current >> behavior. >> >> Sent from my iPhone >> >> On Apr 11, 2017, at 5:47 PM, Remko Popma <[email protected]> wrote: >> >> I can see both sides of the argument. >> >> Rather than changing the semantics of the existing method, what about >> adding a method `Configurator.initializeStrict(String, String)` which >> fails if the specified file doesn't exist? Not sure what the best way to >> fail is: return null or throw exception... >> >> Sent from my iPhone >> >> On Apr 12, 2017, at 9:13, Gary Gregory <[email protected]> wrote: >> >> Hi All: >> >> Using 2.8.2, I call org.apache.logging.log4j. >> core.config.Configurator.initialize(String, String) with a non-exiting >> file location. >> >> The method does not return null because it found another log4j2.xml file >> on my classpath. So I get a LoggerContext but not what I expect... >> >> That does not sound right to me, it should return null, and then I can >> look in the status logger to see what went wrong (if I happen to have it >> set to DEBUG in the log4j2.xml file it did find.) >> >> Thoughts? >> >> Gary >> >> -- >> E-Mail: [email protected] | [email protected] >> Java Persistence with Hibernate, Second Edition >> <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> >> >> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> >> JUnit in Action, Second Edition >> <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> >> >> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> >> Spring Batch in Action >> <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> >> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> >> >> > > > -- > E-Mail: [email protected] | [email protected] > Java Persistence with Hibernate, Second Edition > <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> > JUnit in Action, Second Edition > <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> > Spring Batch in Action > <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > -- Matt Sicker <[email protected]> -- Matt Sicker <[email protected]>
